本地自建ssl流程

找到自己openssl配置的位置

find / -name openssl.cnf

打开openssl.cnf

[ req ]下的#req_extensions = v3_req # The extensions to add to a certificate request注释去掉,启用v3_req

[ v3_req ]下配置 subjectAltName=IP:127.0.0.1,更多配置方法可以参考 https://www.openssl.org/docs/man1.0.2/apps/x509v3_config.html#Subject-Alternative-Name

还可以将 subjectAltName=@alternate_names 在openssl.cnf中额外增加一个新的配置[ alternate_names ]

[ alternate_names ]
DNS.1        = example.com
DNS.2        = www.example.com
DNS.3        = mail.example.com
DNS.4        = ftp.example.com
IP.1         = 192.168.1.1
...

生成签名

方式一 

openssl genrsa -out private.key 2048

openssl req -new -x509 -key private.key -sha256 -out certificate.pem -days 730 -config /PATH/openssl.cnf

方式二

1. 创建服务器证书密钥文件 server.key:
openssl genrsa -des3 -out server.key 1024
输入密码,确认密码,自己随便定义,但是要记住,后面会用到。
2. 创建服务器证书的申请文件 server.csr
openssl req -new -key server.key -out server.csr
输出内容为:
Enter pass phrase for root.key: ← 输入前面创建的密码 
Country Name (2 letter code) [AU]:CN ← 国家代号,中国输入 CN 
State or Province Name (full name) [Some-State]:BeiJing ← 省的全名,拼音 
Locality Name (eg, city) []:BeiJing ← 市的全名,拼音 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名 
Organizational Unit Name (eg, section) []: ← 可以不输入 
Common Name (eg, YOUR name) []: ← 此时不输入 
Email Address []:admin@mycompany.com ← 电子邮箱,可随意填
Please enter the following ‘extra’ attributes 
to be sent with your certificate request 
A challenge password []: ← 可以不输入 
An optional company name []: ← 可以不输入
4. 备份一份服务器密钥文件
cp server.key server.key.org
5. 去除文件口令
openssl rsa -in server.key.org -out server.key
6. 生成证书文件 server.crt
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

方式三

openssl req \
    -newkey rsa:2048 \
    -x509 \
    -nodes \
    -keyout server.key \
    -new \
    -out server.crt \
    -subj /CN=movie.xunlei.com \
    -reqexts SAN \
    -extensions SAN \
    -config <(cat /usr/local/etc/openssl/openssl.cnf \
        <(printf '[SAN]\nsubjectAltName=DNS:movie.xunlei.com')) \
    -sha256 \
    -days 3650

nginx配置

 server {
        listen       443 ssl;
        server_name movie.xunlei.com;

        ssl on;
        #证书 (公钥. 发送到客户端的)
        ssl_certificate ssl/server.crt;
	    #私钥,
        ssl_certificate_key ssl/server.key;
        
        error_log     /var/log/error.sjxl-person-center.com;
        access_log    /var/log/access.sjxl-person-center.com;
        

        location / {
            proxy_pass   http://127.0.0.1:8003;
        }
    }

修改证书的信任(mac)

image

修改为始终信任即可