开始使用ECC多域名SSL证书

作者: boris 分类: 心得感悟,技术文章,阅读笔记 发布时间: 2017-11-07 19:45

说ECC算法前,我们先科普下SSL证书在浏览器上面的作用:

1)证书合法性校验。确保证书由合法 CA 签署,且适用于当前访问的网站;

2)使用证书提供的非对称加密公钥,完成密钥交换和服务端认证。

HTTPS 通过 TLS 层和证书机制提供了内容加密、身份认证和数据完整性三大功能,可以有效防止数据被监听或篡改,还能抵御 MITM(中间人)攻击。TLS 在实施加密过程中,需要用到非对称密钥交换和对称内容加密两大算法。

对称内容加密强度非常高,加解密速度也很快,只是无法安全地生成和保管密钥。在 TLS 协议中,应用数据都是经过对称加密后传输的,传输中所使用的对称密钥,则是在握手阶段通过非对称密钥交换而来。常见的 AES-GCM、ChaCha20-Poly1305,都是对称加密算法。

非对称密钥交换能在不安全的数据通道中,产生只有通信双方才知道的对称加密密钥。目前最常用的密钥交换算法有 RSA 和 ECDHE:RSA 历史悠久,支持度好,但不支持 PFS(Perfect Forward Secrecy);而 ECDHE 是使用了 ECC(椭圆曲线)的 DH(Diffie-Hellman)算法,计算速度快,支持 PFS。要了解更多 RSA 和 ECDHE 密钥交换的细节,可以阅读 Cloudflare 的这篇文章

目前全球使用的SSL证书算法是RSA(非对称秘钥算法),签名算法主要是sha1(已经被淘汰)、sha256(主流)、sha384,但是由于目前移动端的增多,RSA秘钥在加载时显得速度就很不理想,一个256位的ECC算法的证书加密强度相当于RSA4096位的加密强度,但是位数更短,浏览器加载更快,降低了用户访问网站的时间的同时加密强度也有了保障;但是并不是所有浏览器都支持 ECDHE 密钥交换,也就是说 ECC 证书的兼容性要差一些。例如在 Windows XP 中,使用 ECC 证书的网站只有 Firefox 能访问(Firefox 的 TLS 自己实现,不依赖操作系统);Android 平台中,也需要 Android 4+ 才支持 ECC 证书。

好了,话不多说我们直接上申请Let’s encrypt的免费多域名证书,由于Let’s encrypt如果使用自动申请功能的话证书秘钥是RSA算法的,我们这里使用收到操作;

首先是使用OpenSSL生成ECC算法的秘钥,命令如下

 
openssl ecparam -genkey -name secp256r1 -out www.morong.me.key
openssl req -new -sha256 -key www.morong.me.key -nodes -out www.morong.me.csr

使用上面命令生成好CSR,保存好.key文件,后面配置要用到

下面介绍下Let’s encrypt的Certbot来进行手动证书申请,如何安装Certbot,可以访问官方网站

使用下面命令:

 
./certbot-auto certonly --webroot -w /root/home/yourwebrootpath/ -d www.morong.me  -d subdomain.morong.me --email "XXXX@gmail.com" --csr "/etc/letsencrypt/csr/www.morong.me.csr"

参数说明:

–webroot:你的网站主路径

-d :证书要绑定的域名,多个域名就多个-d

–csr:上面使用OpenSSL制作的csr,注意-d里面的域名必须要和csr里面的域名一致

完成以上步骤后,证书就直接签发了,一般会在root目录下面生成三个pem文件,cert.pem公钥、chain.pem证书链(先将这两个文件合成为一个文件,重命名为yourdomain.crt),文件拷贝到nginx的conf目录下面,包括上面使用OpenSSL制作的私钥,可以新建一个sslkey的目录

安装证书:

server {

    listen 443 ssl;

    server_name www.morong.me;

    ssl_certificate /usr/local/nginx/conf/sslkey/www.morong.me.crt;

    ssl_certificate_key /usr/local/nginx/conf/sslkey/www.morong.me.key;

    ssl_ciphers ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!3DES:!MD5:!ADH:!RC4:!DH:!DHE;

    ssl_prefer_server_ciphers  on;

    ……

}

至此证书配置结束,使用chrome访问截图如下:

一条评论
  • 蓝天

    2017年11月14日 上午10:10

    ECC是采用椭圆形的算法,秘钥位数短,加密性能更高,是以后的发展趋势!

发表评论

电子邮件地址不会被公开。 必填项已用*标注