#### # 生成根证书私钥和根证书

    1
    2
    3
    4

    openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -subj "/C=国家/ST=省/L=市/O=机构" -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca

    #示例
    openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -subj "/C=CN/ST=EZ/L=EZ/O=EZ" -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca

#### # 生成自签名证书私钥

    1

    openssl genrsa -out private.key 2048

#### # 根据自签名证书私钥生成自签名证书申请文件

    1

    openssl req -new -key private.key -subj "/C=CN/ST=EZ/L=EZ/O=EZ/CN=192.168.2.117" -sha256 -out private.csr

#### # 定义自签名证书扩展文件 (解决 chrome 安全告警)，新建 private.ext 文件并写入以下内容（IP 为 nginx 服务器 ip，同 nginx.conf 中的 server_name）

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    [ req ]
    default_bits        = 1024
    distinguished_name  = req_distinguished_name
    req_extensions      = san
    extensions          = san
    [ req_distinguished_name ]
    countryName         = CN
    stateOrProvinceName = Definesys
    localityName        = Definesys
    organizationName    = Definesys
    [SAN]
    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = IP:192.168.2.117

#### # 生成自签名证书（有效期 100 年）

    1

    openssl x509 -req -days 36500 -in private.csr -CA CA-certificate.crt -CAkey CA-private.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN

#### # nginx 的 ssl 证书配置

    1
    2

    ssl_certificate_key  /usr/local/nginx/ssl/private.key;
    ssl_certificate      /usr/local/nginx/ssl/private.crt;

#### # 证书安装

需要安装 CA-certificate.crt 到受信任的根证书颁发机构下，即可从浏览器正常访问且不会报不安全警告。

    1
    2
    3
    4
    5
    6
    7
    8
    9

    #ssl测试
    openssl s_client -connect localhost:8080
    #检查证书格式
    openssl x509 -in private.crt -text -noout
    openssl rsa -in private.key -check
    #检查证书是否过期（确保 "notBefore" 小于当前日期，"notAfter" 大于当前日期）
    openssl x509 -in private.crt -noout -dates
    #查看证书链
    openssl x509 -in private.crt -noout -issuer -subject

Nginx https SSL 证书