Chrome信任我的自签名SSL证书
原创
©著作权归作者所有:来自51CTO博客作者feirenraoyuan的原创作品,请联系作者获取转载授权,否则将追究法律责任
方式1:windows工具 https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-windows-amd64.exe (linux版本:https://github.com/FiloSottile/mkcert/releases)
cmd窗口执行下面命令
1、生成证书
mkcert-v1.4.4-windows-amd64.exe www.a.com localhost 127.0.0.1 192.168.100.220
2、安装证书(该命令会在系统中安装ca根证书,图片所示)
mkcert-v1.4.4-windows-amd64.exe -install
3、两个pem文件上传nginx 目录
server {
listen 443 ssl;
server_name www.a.com;
ssl_certificate /etc/nginx/ssl/a.pem;
ssl_certificate_key /etc/nginx/ssl/akey.pem;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /etc/nginx/ssl/;
index index.php index.html index.htm;
}
# php网站需要加入以下配置
location ~ \.php$ {
root /home/baidu;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
方式2: linux执行命令
浏览器请求https
1 客户端(浏览器)访问 HTTPS 的URL;
2 服务器返回 HTTPS 使用的 CA 证书;
3 客户端(浏览器)验证 CA 证书是否为合法证书;
4 验证通过,证书合法,生成一串随机数并使用公钥(证书中提供的)进行加密;
5 发送公钥加密后的随机数给服务器;
6 服务器拿到密文,通过私钥进行解密,获取到随机数(公钥加密,私钥解密,反之也可以);
7 服务器把要发送给浏览器的内容,使用随机数进行加密后传输给客户端(浏览器);
8 此时客户端(浏览器)可以使用随机数进行解密,获取到服务器的真实传输内容。
openssl genrsa -out rootca.key 4096
openssl req -new -out rootca.csr -key rootca.key 公钥+域名
openssl x509 -req -in rootca.csr -out rootca.crt -signkey rootca.key -days 36500 公钥+域名+私钥
openssl genrsa -out server.key 4096
openssl req -new -key server.key -out server.csr 公钥+域名
openssl x509 -req -in server.csr -CA rootca.crt -CAkey rootca.key -CAcreateserial -out server.crt -days 36500 公钥+域名 公钥+域名
chrome信任:
openssl x509 -req -in server.csr -CA rootca.crt -CAkey rootca.key -CAcreateserial -out server.crt -days 36500 -extensions req_ext -extfile ssl.cnf
ssl.cnf文件内容:
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
IP.1 = 10.0.10.22
#DNS.1 = your-website.dev
#DNS.2 = another-website.dev
确认一下新的证书san信息:openssl x509 -in server.crt -noout -text