开发者社区> vTrus> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

ECC+RSA双证书解决方案

简介: 什么是ECC ECC是Elliptic Curves Cryptography的缩写,意为椭圆曲线密码编码学。和RSA算法一样,ECC算法也属于公开密钥算法。最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。
+关注继续查看

什么是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;

----

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

相关文章
通过脚本实现 SSL 证书到期监控
通过脚本实现 SSL 证书到期监控
137 0
关于 SSL 证书
在 HTTPS 协议大行其道的今天,其通信所需要的 SSL 证书也是不可或缺的一环,如果访问没有 SSL 证书的网站,就是下面这样的
88 0
SSL证书对网站好处
如果网站连基本的安全防护都没有,此时的安全性就无法保障,所以为了给网站安全保驾护航,直接给网站配置[ssl证书](https://www.aliyun.com/product/cas?userCode=ffak35up)是很好的。另外,ssl证书的好处有很多,所以给网站配置ssl证书是有必要的。那么,ssl证书的好处是什么呢?
90 0
SSL证书审核方式
SSL证书在颁发前必须经过的流程详解
396 0
SSL可信证书有哪些?
  在现在这个互联网信息化时代里,网络数据信息的安全备受人们关注。当然,人们也有相应的防治措施,很多公司颁发了SSL证书,提供网友们下载。这些SSL证书是通过公用密钥和私人密钥双层密钥的方式,对网络数据信息进行保护。
5480 0
交叉证书
## 证书4要素 pubkey(公钥) ,有一个其一一对应的私钥,由证书拥有者保存。 subject(名字),可以理解为证书的名字,你可以理解为 网站的域名。 issuer(颁发者的名字),即上级证书的subject。 signature(签名) ,上级证书使用私钥对当前证书进行签名的值。 ## 证书签名 假设 有 3 级 证书 ![image.png](
2589 0
kafka SSL证书生成及配置
apache kafka可以使用SSL加密连接,还可以限制客户端访问, 给客户端发行证书,只允许持有证书的客户端访问。 下面使用jdk的keytool工具来生成证书,配置kafka。
3687 0
SSL证书的生成方法
在Linux下,我们进行下面的操作前都须确认已安装OpenSSL软件包。 1.创建根证书密钥文件root.key: [root@mrlapulga:/etc/pki/CA/private]#openssl genrsa -des3 -out root.
941 0
【技术贴】java插入mysql中文乱码解决|java插入mysql数据库显示问号?
【技术贴】java插入mysql中文乱码解决|java插入mysql数据库显示问号?   在你要连接到mysql 的代码里写上?useUnicode=true&characterEncoding=UTF-8" 比如 "jdbc:mysql://localhost:3306/ch...
1492 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载