https红色的not secure怎么解决?(后来又补充了如何更新)

默认分类 · 2019-05-11

这两天又开始折腾自己的博客网站,这个域名在name.com注册的,还赠送https证书。

折腾好久,才发现https红色的not secure问题原因很多,我这记录的只算其中一个了。

问题背景

折腾激活https证书的过程不多说了,激活之后,name.com提供了两个证书。

第1个是"Server Certificate",文件命名为:sanzhou.crt。

第2个是“CA Certificates INTERMEDIATE”,文件命名为:sanzhou_inter.crt

我安装时只是把第1个证书给安装上去,具体文件位置为:

/usr/local/nginx/sanzhou.crt

nginx.conf的相关配置为:

ssl_certificate /usr/local/nginx/sanzhou.crt;

刚开始用chrome打开没问题,过一会就变成了红色的“not secure"

在chrome的developer tools下打开security查看,看到的错误信息是:

This page is not secure(broker HTTPS).
Certificate - Missing
This site is missing a valid trusted certificate 
(net:ERR_CERT_AUTHORITY_INVALID)

解决办法

经过多方查探,甚至用上了sslchecker这些工具网站,才知道自己这个证书有问题。

然后查了半天name.com的说明,半猜半蒙的折腾了下,总算搞定了。

具体办法如下:

1.服务器端

将sanzhou.crt和sanzhou_inter.crt放到一个文件夹下面,然后输入如下命令:

cat sanzhou.crt sanzhou_inter.crt >> sanzhou_all.crt
sudo cp -rv sanzhou_all.crt  /usr/local/nginx/sanzhou.crt
sudo service nginx restart

2.浏览器端

打开chrome,清空所有历史数据,其实也可以在developer tools中单独清空某一个网站的数据。

然后再次打开sanzhou.live,红色的not secure没再出现,搞定。

更新ssl

一般一年给域名续费一次,同步更新一次ssl。

有几个注意的地方

  • csr文件与key文件是一起生成的,其中csr文件只是生成crt文件的时候发生作用,后面就不用了
  • key文件需要与生成的crt文件一起使用,nginx需要计算他们两个是否匹配,如果不匹配,nginx就启动不了。
  • name.com下生成的crt文件按顺序一共3个,第1个是SERVER CERTIFICATE,第2个CA CERTIFICATES INTERMEDIATE,第3个是ROOT,最终用于nginx的crt文件是第1个与第2个合并到一起的crt文件。
  • 如何检查key与crt文件是否匹配:
openssl x509  -noout -modulus  -in  sanzhou_all.crt | openssl md5
(stdin)= 703c4c5bb18161533d5a130ff899f1a9
openssl rsa  -noout -modulus  -in  sanzhou.key | openssl md5
(stdin)= 703c4c5bb18161533d5a130ff899f1a9

如上所示,两个md5值相同,就没有问题,不然nginx启动不了,然后报错

nginx: [emerg] SSL_CTX_use_PrivateKey_file("/usr/local/nginx/sanzhou.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx https ssl
Theme Jasmine by Kent Liao