生成并成功签署 ECC SSL 证书

简介

椭圆曲线密码学(Elliptic curve cryptography,缩写为ECC),一种建立公开金钥加密的算法,基于椭圆曲线数学。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。

ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。

更多资料:椭圆曲线密码学 - 维基百科,自由的百科全书

之前所用 RSA 的证书

之前本博客所用的证书为最普遍的 RSA 证书,生成的方式如下:

openssl genrsa -out imlonghao.com.key 2048

z这样我们就生成了一个 2048 位的私钥,然后我们可以通过

openssl req -new -key imlonghao.com.key -out imlonghao.com.csr

生成 CSR 申请。

由于我的博客并非什么大型的博客,因此我也看不出来 RSA 证书有什么缺点。最近换去了阿里云,因此就打算把博客折腾到妙开的境界。

在主机测评的群中,听闻秋水逸冰说 ECC 证书比较快,是未来的趋势,所以我刚好快要需要 SSL 证书了,干脆就生成一个 ECC SSL 了。

生成 ECC 的证书

生成私钥

openssl ecparam -genkey -name secp384r1 -out imlonghao.com-ecc.key

-name 参数中,你可以自己选择 secp521r1prime256v1 或者是上面所用的 secp384r1

生成 CSR

openssl req -new -sha384 -key imlonghao.com-ecc.key -out imlonghao.com-ecc.csr

在这里我们只需要 sha384 即可,根据维基百科,目前被破解的只有109位的密钥,ECC 最小推荐163位,我们可以选择高一点的 sha384 ,但并不需要512位,因为这会增加的负担,影响效果。

签署证书

参照:GOGETSSL 证书购买记

对比

我们可以看到证书者的共用名已经变成了 COMODO ECC Domain Validation Secure Server CA

顺便去了 SSLLAB 测试了一下,一如既往的 A+

我们可以看到我们的证书已经变成了 EC 384 bits

另外,我还比较了以下 RSA 证书的密钥长度和 ECC 证书的密钥长度,还是 RSA 证书的证书长度和 ECC 的。

root@shield:/var/ssl# cat imlonghao.com.key | wc -l
28
root@shield:/var/ssl# cat imlonghao.com-ecc.key | wc -l
9
root@shield:/var/ssl# cat imlonghao.com.crt | wc -l
99
root@shield:/var/ssl# cat imlonghao.com-ecc.crt | wc -l
68

显然, ECC 证书无论是在密钥还是证书方面都短过 RSA 证书。

写在最后

不知道各位常客有没有觉得博客快了很多呢?

另外,各位需要买 SSL 证书的可以来找我哦~