闲着写点简单的分享

串联证书链和配置Nginx开启SSL

上一篇文章讲到如何用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就可以了

已有 2 条评论
  1. yu

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

    yu 回复
    1. Chakhsu Lau

      必须给的啊~

      Chakhsu Lau 回复
发表新评论