https_1">浏览器信任自定义https证书修改
由于公司内部项目上要求平台使用https协议访问平台地址,并且使浏览器信任自定义HTTPS证书,因此可通过如下方式证书生成方式,并安装自定义生成证书做到浏览器信任自定义HTTPS证书。
通过openssl生成证书步骤如下:
- 生成根证书
- 创建应用证书
- 创建扩展描述文件
- 生成CRT证书文件
- Nginx配置SSL证书
- 安装根证书文件
生成根证书
执行如下命令用于生成CA根证书:
-subj:可根据不同的场景进行替换,记录根证书信息。
-days:证书有效期时间,这里使用10年。
-keyout:根证书key文件名称。
-out:根证书文件名称
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -subj "/C=CN/ST=BJ/L=BJ/O=DfpDev" -keyout CA.key -out CA.crt -reqexts v3_req -extensions v3_ca
示例:
https://i-blog.csdnimg.cn/direct/1c979974014749e6876d5a96b463e0b3.png#pic_center" alt="在这里插入图片描述" />
创建应用证书
该步骤分为两步:
- 创建证书私钥
- 根据私钥创建证书请求文件
创建证书私钥
执行如下命令:
openssl genrsa -out private.key 2048
示例:
https://i-blog.csdnimg.cn/direct/3546ae002a054cc192a0bd870f55e1e0.png#pic_center" alt="在这里插入图片描述" />
创建证书请求文件
执行如下命令:
-key:指定证书的私钥。
-subj:根据场景指定参数,其中CN参数表示访问地址,如果是其他的IP或者域名可替换。
-out:指定证书请求文件名称。
openssl req -new -key private.key -subj "/C=CN/ST=BJ/L=BJ/O=TecDev/CN=127.0.0.1" -sha256 -out private.csr
示例:
https://i-blog.csdnimg.cn/direct/3fdd71fa2fad4255be5b6b58abdfdaa1.png#pic_center" alt="在这里插入图片描述" />
创建扩展描述文件
创建一个SSL扩展的文件,命名为private.ext,内容如下:
[ 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:10.192.122.74
注:subjectAltName需注意,如果在证书请求文件csr中写的是域名,则应该替换成如下,域名使用DNS,IP使用IP:
subjectAltName = DNS:www.test.com
生成CRT证书文件
执行命令如下:
-days:证书有效期,这里使用10年。
-in:指定证书请求文件。
-CA:指定根证书文件。
-CAkey:指定根key证书文件。
-out:生成CRT证书文件名称。
-extfile:指定扩展描述文件。
openssl x509 -req -days 3650 -in private.csr -CA CA.crt -CAkey CA.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN
示例:
https://i-blog.csdnimg.cn/direct/0cb8af8169344f16bd4bc4e0f95deca9.png#pic_center" alt="在这里插入图片描述" />
Nginx配置SSL证书
在Nginx的配置文件中,在指定的server模块下加上SSL配置:
ssl_certificate /etc/nginx/ssl_certificate/private.crt;
ssl_certificate_key /etc/nginx/ssl_certificate/private.key;
#协议优化(可选,优化https协议,增强安全性)
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
执行Nginx重载命令即可。
安装根证书文件
将根证书CA.crt文件下载到本地。
https://i-blog.csdnimg.cn/direct/c26b549da22c4c17997500ec948ebdaa.png#pic_center" alt="在这里插入图片描述" />
本地安装步骤如下:
https://i-blog.csdnimg.cn/direct/01c796704a0b49ca86a120d1efd21759.png#pic_center" alt="在这里插入图片描述" />
选择当前用户或者本地计算机都可以。
https://i-blog.csdnimg.cn/direct/333b76dc04f749978cce441252f0c07a.png#pic_center" alt="在这里插入图片描述" />
这里需选择受信任得根证书颁发机构
https://i-blog.csdnimg.cn/direct/9a8da818359945b1ac15cbfd189f36e6.png#pic_center" alt="在这里插入图片描述" />
导入成功即可。重启浏览器访问即可。