近期本站将https证书从RSA证书升级到了ECC证书,顺带用自己的话来讲一讲这次升级过程
关于ECC
为什么要升级ECC证书
现在大多数的https证书都是使用RSA加密算法的,相较RSA而言,ECC存在以下优点:
- 抗攻击性强
- CPU 占用少
- 内容使用少
- 网络消耗低
- 加密速度快
随着安全等级的增加,当前加密法的密钥长度也会成指数增加,而 ECC 密钥长度 却只是成线性增加。例如,128 位安全加密需要 3,072 位 RSA 密钥,却只需要一 个 256 位 ECC 密钥。增加到 256 位安全加密需要一个 15360 位 RSA 密钥,却只需要一个 512 位 ECC 密钥。ECC 具有如此卓越的按位比率加密的性能,预计其特点将成为安全系统关注的重点。
升级步骤
申请ECC证书
由于使用lnmp,所以就没有使用certbot
了,而是使用acme.sh
关于acme.sh的使用方法,可以看我以前的一篇文章:如何免费申请HTTPS证书
#重新申请ecc证书,dnsapi查阅:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
acme.sh --issue --dns your_dns_api -d your_domain -k ec-256
#如果你想申请泛域名
acme.sh --issue --dns your_dns_api -d your_domain -d *.your_domain -k ec-256
生成完成后将会把生成证书的路径打印出来
修改证书路径
因为我使用的是nginx,此处以nginx为例
修改网站配置文件中的
#替换证书
ssl_certificate /path/to/your/ecc/certification;
#替换key
ssl_certificate_key /path/to/your/ecc/key;
双证书支持
其实就我个人感觉,ECC证书的支持度已经很高了,出现不兼容的情况并不多,所以本站并没有开启双证书支持
如需双证书支持,按如下配置即可
#开启双证书
ssl_prefer_server_ciphers on;
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;
# RSA Certificate
ssl_certificate /path/to/your/certification;
ssl_certificate_key /path/to/your/key;
# ECC Certificate
ssl_certificate /path/to/your/ecc/certification;
ssl_certificate_key /path/to/your/ecc/key;
Q.E.D.