密码讲堂 | 第4讲 什么是SSL证书?什么是国密SSL证书?2023年3月1日

点击 这里 阅读PDF版本(有全球信任和全球法律效力的数字签名和时间戳,版权所有,抄袭违法必究!转载请注明:转载自零信CEO博客)

上一讲讲了PKI公钥基础设施所签发的最重要的数字证书是SSL证书,从本讲开始就重点讲SSL证书,分几期讲。本讲将先讲一讲SSL证书的用途和全球知名的SSL证书提供商有哪些。

大家使用电脑浏览器上网时一定能看到许多网站都会在地址栏显示一个加密锁标识,这表明这个网站部署了SSL证书,实现了从浏览器到服务器之间的自动化信息加密传输,这是用密码技术实现了信息的加密保护,同时实现服务器的身份认证。

大家点击加密锁标识能查看SSL证书是什么样的,如下左图所示,证书信息中显示“这个证书的目的如下:向远程计算机证明你的身份,保证远程计算机的身份” 第一个目的中的“远程计算机”是指用户端电脑,用户使用浏览器访问网站时,网站的身份由SSL证书来证明网站的真实身份。第二个目的中的“远程计算机”指服务器,意思是SSL证书能证明Web服务器的身份。这两句话有点拗口,其核心意思是Web服务器的可信身份由SSL证书来证明。大家注意到没有,没有写明加密的目的,可以理解为加密只是附带的功能,证明服务器身份是主要功能,这是数字证书的核心功能,在证明了服务器的可信身份后才用其公钥证书加密对称加密密钥实现信息加密。如右图所示,如果用记事本打开SSL证书,则显示的是一堆乱码,一般以-----BEGIN CERTIFICATE-----开始,并以-----END CERTIFICATE-----结束。

SSL证书 SSL证书

SSL证书中最核心的部分当然是密码算法,所以用户会关心这张SSL证书采用的何种密码算法签发的,也就是说PKI系统是采用何种密码算法数字签名公钥的。目前,国际上认可的算法是RSA算法和ECC算法,用这两种算法签发的SSL证书称之为国际SSL证书,或RSA SSL证书,或ECC SSL证书。这种叫法的目的是为了区分采用国密算法SM2签发的SSL证书,我们称之为国密SSL证书,或SM2 SSL证书,又可称为商用密码SSL证书,或商密SSL证书。使用零信浏览器访问网站时点击加密锁标识会看到“连接已加密(RSA)”或(ECC)或(SM2),这就是明确告诉用户目前正在使用何种密码算法实现https加密。

RSA SSL证书 ECC SSL证书 SM2 SSL证书

目前,国际标准要求RSA算法的SSL证书密钥长度必须至少2048位,而ECC算法的SSL证书至少是256位,国密标准要求的国密SM2算法SSL证书也是256位,大家从密钥位数的长度就应该能理解ECC算法和SM2算法密钥短,加解密速度更快,能节省算力、带宽和电力。所以,现在许多大流量网站都部署了ECC算法SSL证书,这也是国密算法SM2 SSL证书的技术优势,因为都是采用256位的椭圆曲线算法,只是国密SM2算法的曲线参数是我国自己计算出来的不同。根据证书透明日志数据统计,目前全球有效的SSL证书中采用RSA算法的SSL证书占比90%,ECC算法的SSL证书占比10%,相信随着各大云服务商纷纷自动化为用户配置ECC算法SSL证书,其比例一定会不断上升。

如下左图所示,谷歌搜索部署的就是ECC SSL证书,大家再看看此证书的签名算法是RSA,这说明签发此张SSL证书中级根证书是RSA算法证书,这是一张顶级根证书和中级根证书都是RSA算法,只有用户证书是ECC算法,也就是说证书信任链采用RSA算法签名,而实际https加密采用ECC算法实现,这当然也是符合国际标准的,是因为谷歌没有ECC算法的顶级根证书的不得已的做法。我们再看看右下图,签名算法是ECDSA,用户证书公钥是ECC,这说明签发此张SSL证书的中级根证书是ECC算法证书,这是一张顶级根证书、中级根证书和用户证书都采用ECC算法的SSL证书,整个证书链文件更小,https协议握手效率更高,更节省流量和带宽。

ECC SSL证书 ECC SSL证书

当然,国密SSL证书的全证书链都是采用国密SM2算法,如下左图所示为零信浏览器查看国密SSL证书的证书信息,签名算法是国密SM3_SM2。而用Windows证书查看器查看,则显示签名算法为OID:1.2.156.10197.1.501,这是因为Windows目前还不能正常识别和显示SM2 SSL证书的签名算法,所以下面的公钥参数也是显示为OID:1.2.156.10197.1.301,能识别出这张证书采用的是椭圆曲线算法,但是由于无法识别出是SM2算法的曲线,所以显示为ECC(0 Bits)。大家在不支持SM2算法的系统中查看证书时只要看到这两个OID,那就是SM2算法证书,只是系统没有正常翻译显示出来而已。

SM2 SSL证书 SSL证书

SSL证书的第二个重要信息是这张证书是哪个CA签发的,顶级根证书是哪一家CA的,了解这些信息也很重要。在常规的下面就显示了这张SSL证书是颁发给哪个域名的,颁发者是谁,证书有效期等信息,如下左图所示,目前常见的证书有效期为一年或者90天。点击“证书路径”选项卡,则会显示此证书的完整证书链,第一行就是顶级根证书,表示这张证书的最终信任源来自哪家CA机构。第二行是中级根证书,一般代表这张证书的品牌,第三行是用户证书绑定的网站域名。同时,我们从下面这两张图就能看出这张SSL证书的顶级根证书、中级根证书和用户证书都是ECC算法证书。

SSL证书 SSL证书

目前,市场上统计某个品牌的SSL证书提供商的市场份额或签发量,都是以中级根证书为品牌来统计的。让我们来看看截止到2023年1月1日的数据,全球市场排名前十位的公司及分别签发了多少张有效证书,依次是Let’s Encrypt (4.4584亿张)、Cloudflare (8641万张)、DigiCert (4459万张)、谷歌 (4361万张)、Sectigo (4347万张)、亚马逊 (3896万张)、cPanel (3047万张)、微软 (2170万张)、ZeroSSL (1685万张)、GoDaddy (1021万张)。

大家看到这个统计数据,也许就能理解为何笔者一直称签发SSL证书的公司为“SSL证书提供商”而不是CA机构,因为前十大签发SSL证书的公司中,真正的CA机构只有两家:DigiCert和Sectigo,分别排名第3和第5位,其他8家都是互联网公司或云服务提供商,虽然排名第一位的Let’s Encrypt在官网称其为一家提供TLS证书的非盈利CA,但笔者把这家公司归类到互联网公司一类。排名第二位的Cloudflare是一家互联网云服务提供商,第三位是谷歌,互联网巨头和云服务提供商。第6位亚马逊是云服务提供商,第7位cPanel是互联网公司,第8位是微软,软件巨头、互联网巨头和云服务提供商。第9位是一个SSL证书代理商,属于互联网公司。第10位是GoDaddy,一个老资格的域名注册商和互联网服务提供商。笔者分析这些公司的类型的目的是让大家充分了解SSL证书的大玩家是谁,这有利于帮助国内互联网公司和云服务提供商能从中看到商机,一定要自己签发自己品牌的SSL证书实现自动化为业务系统配置SSL证书,提升云服务的核心竞争力,因为用户需要的不是SSL证书,而是https加密。

下一讲内容预告|第5讲 什么是顶级根证书?什么是浏览器信任根认证计划?
本讲先接着第4讲没有讲的SSL证书的证书链、顶级根证书、中级根证书以及SSL证书的信任机制,再简单介绍一下目前各大浏览器的信任根认证计划,有利于读者了解PKI体系是如何解决网络信任问题的。