网站SSL证书部署失败 原因是RSA和ECC加密类型

情况描述

在来此加密网站上,免费申请成功得到域名SSL证书,部署到服务器中。环境为windows + apache,按照网站上的部署教程部署后,无法启动apache。查看apache的错误日志为:

[ssl:emerg] [pid 748:tid 740] AH01910: Oops, no RSA or DSA server certificate found for x.xxx.xx:0?!
[ssl:emerg] [pid 748:tid 740] AH02312: Fatal error initialising mod_ssl, exiting.
[mpm_winnt:crit] [pid 5400:tid 660] (OS 5)拒绝访问。 : AH00378: Apache2a: Failed to start the service process.

初步排查原因:

1、检查了SSL证书是真实有效的。
2、证书配置路径也没有问题。
3、取消证书配置,apache能够正常启动。
4、配置 SSLEngine on 已经添加。

最终原因:

申请的SSL证书是ECC加密的证书,比较高级,低版本的apache不支持。Apache HTTP Server 2.2.26 以上版本支持ECC SSL证书。Apache HTTP Server 2.2.26其中一条更新日志:

mod_ssl: enable support for ECC keys and ECDH ciphers. Tested against OpenSSL 1.0.0b3.

ECC SSL证书兼容性

Web服务器:Apache HTTP Server 2.2.26+,Apache Tomcat 1.1.30+,Dovecot 2.2.5+,IBM HTTP Server 8.0+,NGINX 1.1.0+,Windows Server 2008+

浏览器:Firefox 2+,Apple Safari 4+ (with a compatible OS),Google Chrome 1.0+ (with a compatible OS),Microsoft Internet Explorer 7+ (Vista)

如果你的环境低于这些版本,说明不支持使用ECC算法的SSL证书。

ECC算法 和 RSA算法

RSA 算法是1976 年提出来的,为了保障数据的安全,RSA 的密钥需要不断增加,导致加解密的速度大为降低。

ECC算法是1985 年提出来的。和 RSA 相比,在许多方面都有对绝对的优势,抗攻击性强,CPU 占用少,内容使用少,网络消耗低,加密速度快。

如何选择

在申请域名SSL证书的时候,该如何选择加密算法

RSA:考虑到更广的适用性,兼容所有平台。

ECC:更加安全高效,部分平台不支持。

来此加密:申请免费证书时,选择合适的加密类型。