串联证书链和配置Nginx开启SSL
in Tutorial with 6 comments
串联证书链和配置Nginx开启SSL
in Tutorial with 6 comments

上一篇文章讲到如何用ECC算法签发证书请求文件CSR,这里假设我们是要签发Comodo Positive SSL的证书,一整套流程下来,会有四个文件发到手上,分别是:AddTrustExternalCARoot.crt、COMODOECCAddTrustCA.crt、COMODOECCDomainValidationSecureServerCA.crt和www_linpx_com.crt

串联证书

拿到后还不能用,需要串联SSL/TLS证书的证书链。一般地,证书链串联的一般原则为:

Comodo的证书是四级证书

CA根证书 > 中间CA证书 > 二级品牌证书 > 网站证书

大多数低价SSL/TLS证书都是这种模式

在Linux下的操作

cat 网站证书文件名 二级品牌证书文件名 中间CA证书文件名 CA根证书文件名 >> 串联好的证书文件名

如:

cat www_yourdomain_com.crt COMODOECCDomainValidationSecureServerCA.crt COMODOECCAddTrustCA.crt > ssl-bundle.crt

图形界面下的操作

将二级品牌证书打开,从

-----BEGIN CERTIFICATE-----

开始复制,一直到

-----END CERTIFICATE-----

将复制的内容粘贴到网站证书的

-----END CERTIFICATE-----下一行

然后将中间CA证书打开,从

-----BEGIN CERTIFICATE-----

开始复制,一直到

-----END CERTIFICATE-----

将复制的内容粘贴到网站证书的最后一个

-----END CERTIFICATE-----下一行

选择上面的任一种方法即可完全串联证书。

配置Nginx

将上面刚刚串联好的证书和该证书的私钥放在同一个文件目录下,这里假设ssl-bundle.crt放在/etc/ssl/certs/下,mysite.key放在/etc/ssl/private/下。

确保配置文件有下面的配置信息

ssl_ciphers建议是下面的这条,这段参考了CloudFlare

ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

配置完成后的例子

server {
listen 443;
server_name mysite.com;

ssl on;
ssl_certificate /etc/ssl/certs/ssl-bundle.crt;
ssl_certificate_key /etc/ssl/private/mysite.key;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

ssl_prefer_server_ciphers on;
}

至此,reload一下你的Nginx就可以了

Responses
  1. 禅猫

    你这怎么都是CRT? 我的还有Pem ,key ..要合并哪几个。。

    Reply
    1. @禅猫

      这,签发下来都是crt,都是发下来的东西,什么key那是自己的私钥吧

      Reply
      1. @Chakhsu

        好吧 郁闷了 我是用命令生成的没注意到这岔事儿~干脆直接去那个网页申请个ecc直接替换了,不搞什么双证书,还有之前那个hsts提交出现的问题,折腾到十二点总算知道错在哪里了。。算是大意失贞吧,我去你那个文章下面回复,给别人做个借鉴。。

        Reply
        1. @禅猫

          可以的,大兄弟~

          Reply
  2. yu

    letsencrypt签发的免费证书给二级证书么?

    Reply
    1. @yu

      必须给的啊~

      Reply