上一篇文章讲到如何用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' 为 on.
- 设置 'listen' 为你的SSL端口,一般是443
- 设置 'ssl_certificate' 为你的证书路径和文件
- 设置 'ssl_certificate_key' 为你的私钥路径和文件
ssl_ciphers建议是下面的这条,这段参考了CloudFlare
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
- 'ssl_protocols' 为 TLSv1 TLSv1.1 TLSv1.2
- 'ssl_prefer_server_ciphers' 为 on;
配置完成后的例子
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就可以了
本文由 Chakhsu Lau 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。
你这怎么都是CRT? 我的还有Pem ,key ..要合并哪几个。。
这,签发下来都是crt,都是发下来的东西,什么key那是自己的私钥吧
好吧 郁闷了 我是用命令生成的没注意到这岔事儿~干脆直接去那个网页申请个ecc直接替换了,不搞什么双证书,还有之前那个hsts提交出现的问题,折腾到十二点总算知道错在哪里了。。算是大意失贞吧,我去你那个文章下面回复,给别人做个借鉴。。
可以的,大兄弟~
letsencrypt签发的免费证书给二级证书么?
必须给的啊~