- 为何会出现ECC证书?原因在于基于ECC算法签发的证书相对RSA证书资源占用更少
- 且安全性更高,不过在兼容性方面RSA证书更优于ECC证书
- RSA算法过于庞大,不适合在移动端运行,采用RSA算法的SSL证书,虽然已经开始应用于移动互联网
- 为了确保兼容性的同时降低服务器资源占用,我们可以在服务器中同时部署ECC+RSA双证书
- 但由于移动设备加解密计算能力有限,内存和联网带宽也有限,在移动端运行2048位RSA算法仍是一个较大的挑战
- 特别是在用户的移动网络差时几乎无法完成证书公钥的下载与证书链验证
- ECC的密钥长度远比RSA短。ECC密钥长度只有256位
- 是RSA密钥长度的十二分之一,却能实现与RSA同等的加密强度
- 而且ECC算法加解密速度更快,存储空间占用更小,带宽要求更低,其短小精悍的特点,尤其适用于移动互联网环境
- 另外,目前国内多家主流的CDN提供商都还没有支持ECC+RSA双证书的部署
- 所以暂时无法在CDN上部署双证书
- 环境
Nginx 1.11.0+ OpenSSL 1.0.2+
- 签发证书
- 目前廉价或免费的ECC证书解决方案
- Comodo的低端证书(四级证书链接,略长)
- Let’s Encrypt的免费证书(90天签发一次,签发略复杂)
- 工具申请证书
- 可以使用acme.sh这个工具来申请证书,这样子配置稍微轻松一点
- 这是一个试例
acme.sh --issue --dns dns_cx -d 域名.com -d www.域名.com -k ec-256
- 手动申请证书
- 可能是我比较折腾,我直接手动申请Let’s Encrypt的免费证书😛
- 首先在你的证书目录下创建两个文件pem跟key文件
- 1.png
- 加密算法使用ECC
- 2.png
- 然后提交,等出现待验证
- 3.png
- 我这里使用DNS验证
- 4.png
- 前往自己域名服务商的域名控制台
- 填写上面的值
- 5.png
- 再回来点击验证全部
- 6.png
- 这个等待有那么一点点久的
- 出现待生成就可以了
- 7.png
- 下载压缩包
- 8.png
- 查看里面的内容
- fullchain.crt是pem,private.pem是key
- 不要搞反了
- 复制里面的内容到上面相应的文件内
- Nginx配置
- 在里面加入
ssl_certificate /www/server/stie_ssl/mhjd.qaqbuyan.com/mhjd.qaqbuyan.com.ecc.pem; ssl_certificate_key /www/server/stie_ssl/mhjd.qaqbuyan.com/mhjd.qaqbuyan.com.ecc.key;
- 路径自己改成自己创建的证书位置
- 9.png
- 此时由于双证书,浏览器无法区分不同的加密算法使用的配套加密协议该使用哪个证书
- 因此重点在于算法的区分,不同的算法对应不同是证书,需要配置ssl_ciphers
- 这是我的
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
- 10.png
- 现在重启Nginx
- 验证部署前往myssl.com中查看
- 两个都显示可信就到此结束了
- 11.png
- 12.png
- 证书到期提醒
- 上面说了Let’s Encrypt的免费证书90天要重新签发一次,那么可以在下载的时候设置到期提醒
- 13.png
【Nginx部署ECC+RSA双SSL证书】
开始
完结