近期本站将https证书从RSA证书升级到了ECC证书,顺带用自己的话来讲一讲这次升级过程

关于ECC

为什么要升级ECC证书

现在大多数的https证书都是使用RSA加密算法的,相较RSA而言,ECC存在以下优点:

  1. 抗攻击性强
  2. CPU 占用少
  3. 内容使用少
  4. 网络消耗低
  5. 加密速度快

随着安全等级的增加,当前加密法的密钥长度也会成指数增加,而 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.


此 生 无 悔 恋 真 白 ,来 世 愿 入 樱 花 庄 。