前几天捣鼓 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 可以看到网站成功启用了双证书。