RSA的SSL证书认证,非常多的站长都在使用的,而ECC并没有多少站长在使用,相信听的人也很少吧。不过,也会有一些站长不会很明白,SSL http https RSA ECC是什么来的。ssl不是https呢?我也无法帮给大家讲清楚,大家可以自行百度一下吧。不过,简单的来说:http、https是一种网络协议,SSL是一种为网络通信提供安全及数据完整性的一种安全协议,RSA ECC是一种安全加密算法。
科普小知识:
椭圆曲线密码学(Elliptic curve cryptography,缩写为ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学,其更适合于移动互联网,有更好的安全性和更好的性能。ECC加密算法 1985年 提出,到2005 年才在各种操作系统中获得广泛支持,2015 年开始被普遍性的部署。
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
说说这RSA和ECC的一些优点和缺点吧!
RSA它的兼容性比ECC的好,但是占用的资源也大,因为那时都是PC时代,而ECC的加密解密码速度快,占用资源小,现在都是移动时代了,手机的CPU处理能力是没有PC的强,所以现在慢慢的开始都在用ECC,不过ECC它不兼容 java 6u45 java 7u80 Windows XP Android 2.3,说白了,老的东西都不支持了。而RSA都是兼容支持的。
好了,现在开始说在BT宝塔已有SSL上进行配置nginx的RSA+ECC双证书吧。。现在宝塔面板是不支持配置双证书的,要手动进行配置。其实也是非常简单的。只要用到acme.sh这个工具就行了,而BT宝塔面板已经上有的了,如果你的服务器没有,如果到这里进行下载安装https://github.com/Neilpang/acme.sh
除了acme.sh这个工具外,也可以用openssl命令来生成证书,也有在线生成证书的,网站:https://www.chinassl.net/ssltools/generator-csr.html
openssl一键命令:
#openssl ecparam -out 你的域名.ecc.pkey -name secp256r1 -genkey && openssl req -new -key 你的域名.ecc.pkey -sha256 -nodes -out 你的域名.ecc.csr -subj “/C=CN/ST=省份/L=城市/O=组织/OU=组织单位/部门/分支/CN=你的域名"
将中文部分修改补齐即可,默认生成 256 bit 的 key 和 csr 。
[root@VM_0_10_centos ~]# acme.sh --issue -w /www/wwwroot/www_mxlog_com/ -d mxlog.com -d www.mxlog.com --keylength ec-256
-w:网站目录
-d:你的网站域名
--keylength:指定生成的证书
[Thu Feb 14 16:53:16 CST 2019] Registering account [Thu Feb 14 16:53:28 CST 2019] Registered
[Thu Feb 14 16:53:28 CST 2019] ACCOUNT_THUMBPRINT='96ncG..............................U-IXS7Jdd4C4'
..............................
..............................
[Thu Feb 14 16:53:41 CST 2019] The new-authz request is ok.
[Thu Feb 14 16:53:41 CST 2019] Verifying:mxlog.com
[Thu Feb 14 16:53:47 CST 2019] Success
[Thu Feb 14 16:53:47 CST 2019] Verifying:www.mxlog.com
[Thu Feb 14 16:53:55 CST 2019] Success
[Thu Feb 14 16:53:55 CST 2019] Verify finished, start to sign.
[Thu Feb 14 16:54:00 CST 2019] Cert success.
-----BEGIN CERTIFICATE-----
MIIEjjCCA3agAwIBAgISA6GrlUrsVqcRjDVuqa+Ek0mkMA0GCSqGSIb3DQEBCwUA
..............................
.......这里有是密钥...........
..............................
gxL3F+tvR8CPu5mwi/8z2qqNU8nUwfJBbmTVFlVhhtyFTRjvZiG+ymExvdfsWN5x
DmtY8f+Jy7rIYCao1ruQ9UYb
-----END CERTIFICATE-----
[Thu Feb 14 16:54:00 CST 2019] Your cert is in /www/s......./mxlog.com_ecc/mx.m.cer
[Thu Feb 14 16:54:00 CST 2019] Your cert key is in /www/...../mxlog.com_ecc/mx.m.key
[Thu Feb 14 16:54:08 CST 2019] The intermediate CA cert is in /www/....../mxl.._ecc/ca.cer
[Thu Feb 14 16:54:08 CST 2019] And the full chain certs is there: /www/..../mxl.._ecc/fullchain.cer
在最后会提示相关的证书和KEY存放在位置。绿色的哦,打开BT宝塔面板,找到你的网站的配置文件。
在#HTTP_TO_HTTPS_END下面添加ECC的证书位置就可以了。其中cer是有三个的,第一个是域名的私要证书,第二个是CA证书,第三个添加了CA证书和域名证书的结合证书,是代码如下:
ssl_certificate 你生成的fullchain.cer;
ssl_certificate_key 你生成的xx.key;
再把ssl_ciphers 的内容修改为:
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
这样,保存重启nginx,一定要重启哦,不重启的话,是不生效的。
怎样看是不是已经支持了呢?送你一个网站进行检测 https://www.myssl.com
浏览器检测,https协议的网站在浏览器左边都是有一个绿色的锁的标志,用光标点击一下会弹出相关的信息,而ECC认证成功的是:Let's Encrypt Authority x3的英文,如图右边,如果是普通时的SSL认证是CA证书的,如图左边那个,
来吧。。走起来吧,,,动手做一做的!!!发现用了ECC后,网站打开的速度是快了不少。
如有不明白,可以留下你的评论,我看到了,会帮你解决。