开发者社区> vTrus> 正文

ECC+RSA双证书解决方案

简介: ECC+RSA双算法SSL证书的配置方法
+关注继续查看

什么是ECC

ECC是Elliptic Curves Cryptography的缩写,意为椭圆曲线密码编码学。和RSA算法一样,ECC算法也属于公开密钥算法。最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。
ECC算法的数学理论非常深奥和复杂,在工程应用中比较难于实现,但它的单位安全强度相对较高,它的破译或求解难度基本上是指数级的,黑客很难用通常使用的暴力破解的方法来破解。RSA算法的特点之一是数学原理相对简单,在工程应用中比较易于实现,但它的单位安全强度相对较低。因此,ECC算法的可以用较少的计算能力提供比RSA加密算法更高的安全强度,有效地解决了“提高安全强度必须增加密钥长度”的工程实现问题。

与RSA算法相比,ECC算法拥有突出优势:

1、更适合于移动互联网: ECC加密算法的密钥长度很短(256位),意味着占用更少的存储空间,更低的CPU开销和占用更少的带宽。随着越来越多的用户使用移动设备来完成各种网上活动,ECC加密算法为移动互联网安全提供更好的客户体验。

2、更好的安全性:ECC加密算法提供更强的保护,比目前的其他加密算法能更好的防止攻击,使你的网站和基础设施比用传统的加密方法更安全,为移动互联网安全提供更好的保障。

3、更好的性能: ECC加密算法需要较短的密钥长度来提供更好的安全,例如,256位的ECC密钥加密强度等同于3072位RSA密钥的水平(目前普通使用的RSA密钥长度是2048位)。其结果是你以更低的计算能力代价得到了更高的安全性。经国外有关权威机构测试,在Apache和IIS服务器采用ECC算法,Web服务器响应时间比RSA快十几倍。

4、更大的IT投资回报:ECC可帮助保护您的基础设施的投资,提供更高的安全性,并快速处理爆炸增长的移动设备的安全连接。 ECC的密钥长度增加速度比其他的加密方法都慢(一般按128位增长,而 RSA则是倍数增长,如:1024 -2048--4096),将延长您现有硬件的使用寿命,让您的投资带来更大的回报。

ECC加密算法的通用性不断增强

ECC加密算法自1985年提出,因其工程应用中难度较高,到2005年才在各种操作系统中获得广泛支持,在全球安全市场需求的刺激下,ECC算法将逐步取代RSA算法,成为主流加密算法。目前,全球各大CA都已经陆续开始为用户签发采用ECC加密算法的各种证书.ECC加密算法以后支持所有操作系统、所有浏览器和各种移动终端,主要有:

Mozilla NSS 3.11以上版本支持

OpenSSL 1.0以上版本支持

微软CryptoAPI Vista/Win7/Win8都支持

BouncyCastle 1.32以上版本支持

JSSE 6 以上版本支持

BSAFE 4.0 以上版本支持

各种版本的IE浏览器、火狐浏览器、谷歌浏览器和苹果浏览器都支持

安卓系统(2.3以上版本)、苹果IOS(5.0以上版本)、Window Phone(各种版本)都支持

Apache配置方法

首先将 ecc 证书和 rsa 证书的证书链合并, ecc 证书链在前, rsa在后, cat chain-ecc.crt chain-rsa.crt > chain-ecc-rsa.crt 打开apache安装目录下conf/extra目录中的httpd-ssl.conf(或conf目录中的ssl.conf)文件
在配置文件中的
<VirtualHost *:443>……</VirtualHost> 之间添加或编辑如下配置项

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
#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.crt

如果服务器的 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 证书没法生效了。==

Nginx配置方法

nginx 最新的 mainline 版本已经支持了双证书,推荐使用nginx 1.11.1版本,openssl 版本推荐使用1.0.2h版本。

修改nginx的配置文件 nginx.conf 配置双证书:

ssl_certificate ssl/ecc/server.pem;  
ssl_certificate_key ssl/ecc/server.key;  
ssl_certificate ssl/rsa/server.pem;  
ssl_certificate_key ssl/rsa/server.key;

ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;

----

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS "The sandbox is not in sync with the Podfile.lock"解决方案
更新Cocoapod之后出现问题: diff: /../Podfile.lock: No such file or directory diff: Manifest.
1822 0
开发者社区精选直播合集(三十)| 多活容灾最佳实践与解决方案
近期数据库被恶意删除的事件频发,引起了大家对企业数据安全的关注。企业数据库安全面临哪些挑战?我们遇到过哪些数据安全事故?如何保障企业最重要的数据资产不受损害?
189 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29133 0
iis安装完成后,管理工具中不显示,解决方案
1、管理工具中的“INTERNET信息服务”本来就是一个快捷方式来的。      本标为:C:\WINDOWS\SYSTEM32\INETSRV\IIS.MSC,找到发送到桌面快捷方式即可。 2、Win7配置IIS遇到问题及解决方法:IIS图标不见了
1024 0
JAVA通过servlet读IE端的证书即为什么老是得到null值的最终解决方案
更详细的内容参考我的另一篇: 网上交易安全之九阳神功-使用JAVA调用U盾进行客户认证的total solution 需要解决的问题: 1.
1210 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20693 0
+关注
39
文章
31
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载