2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 解决https网站通过nginx+openssl自签名证书访问 在谷歌浏览器报不安全告警的问题

解决https网站通过nginx+openssl自签名证书访问 在谷歌浏览器报不安全告警的问题

时间:2021-11-29 04:16:15

相关推荐

解决https网站通过nginx+openssl自签名证书访问 在谷歌浏览器报不安全告警的问题

一、背景描述:

遇到需要从http跨协议访问https的情况,此时就需要对要访问的https网址生成自签名证书,但是在谷歌浏览器中会报不安全的告警,必须手动操作下才能最终访问到https网址,很是麻烦。

二、解决措施:

1.使用指定-subj “/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization”,生成根证书私钥和根证书 -keyout CA-private.key -out CA-certificate.crt

命令:openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -subj“/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization” -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca

2.生成自签名证书私钥 -out private.key

命令:openssl genrsa -out private.key 2048

3.根据自签名证书私钥生成自签名证书申请文件 -out private.csr

命令:openssl req -new -key private.key -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization/CN=192.168.137.10" -sha256 -out private.csr

4.定义自签名证书扩展文件(解决chrome安全告警)。在默认情况下生成的证书一旦选择信任,在 Edge, Firefox 等浏览器都显示为安全,但是Chrome仍然会标记为不安全并警告拦截,

这是因为 Chrome 需要证书支持扩展 Subject Alternative Name, 因此生成时需要特别指定 SAN 扩展并添加相关参数,将下述内容放到一个文件中,命名为private.ext

##############################private.ext##############################

[ req ]default_bits = 1024distinguished_name = req_distinguished_namereq_extensions= sanextensions= san[ req_distinguished_name ]countryName = CNstateOrProvinceName = DefinesyslocalityName = DefinesysorganizationName = Definesys[SAN]authorityKeyIdentifier=keyid,issuerbasicConstraints=CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermentsubjectAltName = IP:192.168.137.10

##############################private.ext##############################

5.根据根证书私钥及根证书-CA CA-certificate.crt -CAkey CA-private.key、自签名证书申请文件 -in private.csr、自签名证书扩展文件 -extfile private.ext,生成自签名证书 -out private.crt

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

6.将证书配置到nginx配置文件的http-server模块里,类似:

server {listen 443 ssl;server_name localhost;ssl_certificate/etc/nginx/ssl/private.crt;ssl_certificate_key /etc/nginx/ssl/private.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {root html;index index.html index.htm;}}

7.把该证书CA-certificate.crt安装到受信任的根证书颁发机构下,即可从谷歌浏览器正常访问https的对应网址且不会报不安全警告。

三、最终效果

四、证书详情

1.证书常规信息

2.证书详细信息1

2.证书详细信息2

3.证书路径

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。