Apache 安装 RSA/ECC 双证书模式简易教程

2016-02-27 13:44:19 +08:00
 alect
前几天捣鼓 ECC 证书 /t/258912,简单看了下 Apache 运行双证书非常方便,说下自己的实现过程。

OpenSSL 版本最好是 1.0.2 以上,如果是 1.0.1 也行,以下分两种情况说明。

一般大家用的都是系统默认的 OpenSSL 版本仅为 1.0.1 (我用的 centos7 ,默认是 1.0.1 ),而更新 OpenSSL 并不建议,所以为了不影响系统其他软件,一般建议将 OpenSSL 1.0.2 安装到了非默认路径,然后编译 Apache 的时候指定新版 OpenSSL 。
--------------------------------------------------------------------------------------------------------
如果不想编译 OpenSSL ,仍旧使用 1.0.2 以前的版本,则用以下方法:
首先将 ecc 证书和 rsa 证书的证书链合并, ecc 证书链在前, rsa 在后,
cat chain-ecc.txt chain-rsa.txt > chain-ecc-rsa.txt

将 ecc 证书(不含证书链)和 ecc 证书的密钥文件放在前,
#ECC
SSLCertificateFile /etc/apache2/SSL2015/ecdsa.cert.crt
SSLCertificateKeyFile /etc/SSL2015/certs/ecdsa.key
将 rsa 证书(不含证书链)和 rsa 证书的密钥文件放在后,
#RSA
SSLCertificateFile /etc/apache2/SSL2015/rsa.cert.crt
SSLCertificateKeyFile /etc/apache2/SSL2015/rsa.cert.key

#指定 ecc/rsa 合并后的证书链位置
SSLcertificateChainFile /etc/apache2/SSL2015/chain-ecc-rsa.txt

--------------------------------------------------------------------------------------------------------
如果你的 OpenSSL 版本已经为 1.0.2 以及更新的版本,则用以下方法,ecc 和 rsa 证书要包含证书链:

#ECC 指定 ecc 证书文件位置(证书以及证书链合并为一个文件为 ecdsa.cert.pem )
SSLCertificateFile /etc/apache2/SSL2015/ecdsa.cert.pem
SSLCertificateKeyFile /etc/SSL2015/certs/ecdsa.key

#RSA 指定 rsa 证书文件位置(证书以及证书链合并为一个文件为 rsa.cert.pem )
SSLCertificateFile /etc/apache2/SSL2015/rsa.cert.pem
SSLCertificateKeyFile /etc/apache2/SSL2015/rsa.cert.key

--------------------------------------------------------------------------------------------------------

以上是指定证书的方式,各位根据 OpenSSL 的版本选择对应的方式,当然这还没完,下一步要直接指定证书加密方式,确保 ecc 的加密方式要在 rsa 模式的前面,否则 ecc 证书没法生效了。


#为了安全起见,关闭 SSLv2/SSLv3,
# Disable SSLv2/3
SSLProtocol All -SSLv2 -SSLv3
#启用加密方法首选项
SSLHonorCipherOrder On
# https://mozilla.github.io/server-side-tls/ssl-config-generator/
# 各位可以根据这个网站选择对应的加密方式,但是要将 ECDHE-ECDSA-AES128-GCM-SHA256 这一条放在最前面,其他的你可以根据这个网站上提示自己生成。
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

--------------------------------------------------------------------------------------------------------
用 Windows 7 + Chrome 48 访问,显示的为 ECC 证书


用 Windows XP + Chrome 48 访问,显示的为 RSA 证书


访问 https://cryptoreport.websecurity.symantec.com/checker/views/certCheck.jsp 可以看到网站成功启用了双证书。
4681 次点击
所在节点    SSL
7 条回复
Citrus
2016-02-27 14:15:09 +08:00
然后你的握手包就这么翻了一倍。。。
alect
2016-02-27 14:21:42 +08:00
@Citrus openssl s_client -showcerts -connect abc.com:443 检测只看到发送了一个证书,并没有将两个证书都发过来,或者是我检测的方法不对?
Citrus
2016-02-28 13:10:29 +08:00
@alect 我的错,想当然了。抓包看了一下似乎服务器会根据 Client Hello 里面的信息来判断应该发哪个证书,而不是一股脑的两个都发过来。
DesignerSkyline
2016-03-12 22:57:11 +08:00
对于 Let's Encrypt 的用户,可以稍微再等几天。 ECC 证书链过几天就会上

ECDSA Intermediates
ETA: Before August 1, 2016

Let ’ s Encrypt only signs end-entity certificates with RSA intermediates. We will add the ability to have end-entity certs signed by an ECDSA intermediate.
DesignerSkyline
2016-03-12 22:57:46 +08:00
@DesignerSkyline 错了,是 intermediate
lslqtz
2016-03-17 07:35:14 +08:00
感觉没啥大用啊。。个人感觉单用 ECC 就好了。我的 Let's Encrypt 就是用的 ECC 证书。毫不在乎 xp 用户 233
alect
2016-03-17 13:01:46 +08:00
@lslqtz 对于谷歌这种级别的网站,就算只有 1%的还在用 RSA 证书,也是很可观的。
对于个人网站,真的是无所谓。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/259478

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX