为了可以使用https协议访问局域网内的服务器,收集并整理了网上有关局域网证书签发的资料。

生成CA

  1. 创建CA使用的密钥

    openssl genrsa -out ca.key
  2. 生成根CA证书

    openssl req -new -x509 -key ca.key -out ca.crt -days 3650
  3. 将CA证书放入受信任的根证书颁发机构(windows系统)

签发服务器使用的证书

  1. 生成证书使用的密钥

    openssl genrsa -out web.key
  2. 生成证书请求文件CSR

    由于我们的服务器是通过ip地址或域名都可访问的,所以在申请证书时,需要修改默认的配置文件以添加额外信息。可以将默认的openssl.cnf文件复制一份后进行修改,该文件所在位置在openssl的OPENSSLDIR目录中,可以通过openssl version -a命令获取。

    # 文件名为 openssl.cnf
    [ req ]
    default_bits = 2048
    distinguished_name = req_distinguished_name
    req_extensions = req_ext

    [ req_distinguished_name ]
    countryName = Country Name (2 letter code)
    countryName_default = CN
    countryName_min = 2
    countryName_max = 2
    stateOrProvinceName = State or Province Name (full name)
    stateOrProvinceName_default = JS
    localityName = Locality Name (eg, city)
    0.organizationName = Organization Name (eg, company)
    0.organizationName_default = Internet Widgits Pty Ltd
    organizationalUnitName = Organizational Unit Name (eg, section)
    organizationalUnitName_default = Nas
    commonName = Common Name (e.g. server FQDN or YOUR name)
    commonName_max = 64
    emailAddress = Email Address
    emailAddress_max = 64

    [ req_ext ]
    subjectAltName = @alt_names

    [alt_names]
    DNS.1 = *.mtnas.local
    IP.1 = 192.168.50.2

    如果是有多个域名,则可以继续添加DNS.2DNS.3…,多个IP也同理。

    之后使用如下命令来生成csr文件。

    openssl req -new -sha256 -out web.csr -key web.key -config openssl.cnf
  3. 证书签名

    openssl x509 -req -in web.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
    -days 365 -out web.crt -extensions req_ext -extfile openssl.cnf

参考资料

  1. 使用 openssl 创建自签发证书,含IP证书及泛域名证书

  2. OpenSSL自签发自建CA签发SSL证书