以Nginx为例介绍如何使用ECC证书
发布日期:2016-09-08什么是ECC证书?如何使用ECC证书?下文以 Nginx 为例介绍如何使用 ECC 证书?
我之前的文章多次提到 ECC 证书,但一直没有专门介绍 ECC 证书的文章,今天补上。顺便说下,本站已经用上了 ECC 证书。要查看本站主要支持哪些技术特性,可以点这里。
有了 RSA/ECC 双证书之后,还需要安装 Nginx 1.11.x。这部分内容我之前详细写过,请点击查看。
一切准备妥当后,将证书配置改为双份即可:
问题来了!本站使用 Cloudflare 提供的 Cipher Suites 配置,在 Nginx 中配置了双证书并重启,用 Chrome 测试发现仍然没有采用 ECC 证书。这是为什么呢?
研究发现,Chrome 与服务端协商到的 Cipher Suites 是 ECDHE-RSA-AES128-GCM-SHA256,来自于 ssl_ciphers 配置中的 EECDH+AES128 这部分。我们通过 openssl 工具看一下 EECDH+AES128 具体包含哪些 Cipher Suites:
可以看到,使用 RSA 做为签名认证算法(Au=RSA)的加密套件排到了前面,导致 Nginx 作出了错误判断。
知道原因就好办了,将这段配置改为 EECDH+ECDSA+AES128:EECDH+aRSA+AES128,再看一下:
这下就没问题了。
并不是所有加密套件都需要把 ECDSA 和 aRSA 分开写,例如 EECDH+CHACHA20 就不需要,ECDSA 默认就在前面:
最终,我的 Cipher Suites 配置如下,供参考:
摘自JerryQu: https://imququ.com/post/ecc-certificate.html