keytool -genkey -alias myssl.com -sigalg SHA256withRSA -keyalg RSA -keysize 2048 -keystore myssl.com.jks -dname "C=CN,ST=henan,L=zhengzhou,O=,OU=,CN=myssl.com" && keytool -certreq -alias myssl.com -file myssl.com.csr -keystore myssl.com.jks && echo Your certificate signing request file is myssl.com.csr. Your keystore file is myssl.com.jks
也可以通过在线网站生成,如下
myssl.com/csr_create.…
建议商业用户使用离线工具生成和处理私钥,如OpenSSL、KeyManager 本地加密存储。
发送CSR文件给CA机构。CA机构核实申请者的身份,最简单的核实就是校验域名(www.myssl.com)的拥有者是不是证书申请者,一旦核实成功,CA机构对CSR文件做处理,设置有效期限等,并做最为关键的动作:用自己的私钥对CSR文件进行签名,并将签名值附在CSR文件后面,这样就生成了一张有效的SSL证书。
用户收到证书后,在web服务器(或负载均衡等设备)上,以此前的私钥文件和收到的公钥证书为密钥对,并配置绑定到对应的web站点上。
浏览器向服务器端发送连接请求www.myssl.com
服务器接收到请求后,将证书文件和RSA密钥对的公钥发送给浏览器
浏览器接收到证书文件,从中判断出是某CA机构签发的证书,并且知道了证书签名算法是ECDSA算法,由于浏览器内置了该CA机构的根证书,根证书包含了CA机构的ECDSA公钥,用于验证签名。
浏览器一旦验证签名成功,代表该证书确实是合法CA机构签发的。
浏览器接着校验证书申请者的身份,从证书中取出RSA公钥(注意不是CA机构的公钥)和主机名,假设证书包含的主机也是www.myssl.com,且连接阶段接收到的RSA公钥等同于证书中包含的RSA公钥,则表示浏览器成功校验了服务器的身份,连接的服务器确实是https://www.myssl.…
一旦服务器身份校验成功,接下来就是进行密钥协商,协商出密钥块。
明白以上概念及流程,接下来理解PKI就相对容易了。
PKI体系
PKI 是 Public Key Infrastructure 的缩写,其主要功能是绑定证书持有者的身份和相关的密钥对(通过为公钥及相关的用户身份信息签发数字证书),为用户提供方便的证书申请、证书作废、证书获取、证书状态查询的途径,并利用数字证书及相关的各种服务(证书发布,黑名单发布,时间戳服务等)实现通信中各实体的身份认证、完整性、抗抵赖性和保密性。
更简单点讲就是基于公钥算法和技术,为网上通信提供安全服务的基础设施。
**身份验证:**确保另一方是你要与之通信的合法服务器或者个人。
**信息加密:**确保没有其他方可以阅读你的通信甚至篡改你的通信。
为了规范化运用PKI技术,出现了很多标准,HTTPS中最常用的标准就是X.509标准。X.509标准来自国际电信联盟电信标准(ITU-T)的X.500标准,1995年国际互联网工程任务组(IETF)的PKIX小组成立,用来建设互联网的PKI公钥基础设施标准,建立的标准就是X.509。
X.509数字证书:解决公钥与用户映射关系问题;
CA颁发机构:解决数字证书签发问题;
RA注册机构:主要审核服务器实体的身份,一般情况下,可以认为CA机构包含了RA机构;
数字签名:数字签名可以确保消息、文件或数据没有任何更改。它使用信息的加密哈希值来确保数据的完整性,保证任何人都无法修改信息;
KMC(Key Management Center密钥管理中心):解决私钥的备份与恢复问题;
LDAP(Lightweight Directory Access Protocol轻型目录访问协议):解决数字证书查询和下载的性能问题,避免 CA 中心成为性能瓶颈;
CRL(Certificate Revocation List证书吊销列表) :是一个结构化文件,每个CA机构将所有的吊销证书(由其签发的)集成在一个文件中,这就是CRLs,CRLs相当于一个黑名单,包含了所有被吊销服务器实体证书的序列号和吊销原因,如果一个待校验服务器实体证书的序列号能够匹配CRLs,表示该证书被吊销了。随着时间的推移,CRLs黑名单会越来越大,需要下载完整的CRLs文件,然后再进行吊销状态检查,这是CRL技术逐步被OCSP技术取代的主要原因;
OSCP(Online Certificate Status Protocol在线证书状态协议):请求方为了查询某张证书的吊销状态,向OCSP提供方发送一个查询请求,OCSP提供方根据查询条件,直接返回该证书的吊销状态,方便用户快速获得证书状态,OCSP更高效、扩展性更好,但是也存在一些缺点,可以使用OCSP封套技术解决。
SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中,调用该算法时,需要通过加密芯片的接口进行调用。
采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
SM4对算法是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
此算法采用非线性迭代结构,每次迭代由一个轮函数给出,其中轮函数由一个非线性变换和线性变换复合而成,非线性变换由S盒所给出。其中rki为轮密钥,合成置换T组成轮函数。轮密钥的产生与上图流程类似,由加密密钥作为输入生成,轮函数中的线性变换不同,还有些参数的区别。
公钥密码算法(非对称算法)
SM2算法全称为SM2椭圆曲线公钥密码算法,是国家密码管理局2010年12月发布的第21号公告中公布的密码行业标准。SM2算法属于非对称密钥算法,使用公钥进行加密,私钥进行解密,已知公钥求私钥在计算上不可行。发送者用接收者的公钥将消息加密成密文,接收者用自已的私钥对收到的密文进行解密还原成原始消息。
SM2算法相比较其他非对称公钥算法如RSA而言使用更短的密钥串就能实现比较牢固的加密强度,同时由于其良好的数学设计结构,加密速度也比RSA算法快。
SM3密码杂凑算法是国家密码管理局2010年公布的中国商用密码杂凑算法标准。该算法消息分组长度为512比特,输出杂凑值256比特,采用Merkle-Damgard结构。SM3密码杂凑算法的压缩函数与SHA-256的压缩函数具有相似的结构,但是SM3密码杂凑算法的设计更加复杂,比如压缩函数的每一轮都使用2个消息字,消息拓展过程的每一轮都使用5个消息字等。目前对SM3密码杂凑算法的攻击还比较少。
SM7对称密码算法
SM7算法是一种分组密码算法,分组长度为128比特,密钥长度为128比特。SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付一卡类应用(积分消费卡、校园一卡通、企业一卡通等)。
SM9标识密码算法
为了降低公开密钥系统中密钥和证书管理的复杂性,以色列科学家、RSA算法发明人之一Adi Shamir在1984年提出了标识密码(Identity-Based Cryptography)的理念。标识密码将用户的标识(如邮件地址、手机号码、QQ号码等)作为公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,非常适合端对端离线安全通讯、云端数据加密、基于属性加密、基于策略加密的各种场合。2008年标识密码算法正式获得国家密码管理局颁发的商密算法型号:SM9(商密九号算法),为我国标识密码技术的应用奠定了坚实的基础。
SM9算法不需要申请数字证书,适用于互联网应用的各种新兴应用的安全保障。如基于云技术的密码服务、电子邮件安全、智能终端保护、物联网安全、云存储安全等等。这些安全应用可采用手机号码或邮件地址作为公钥,实现数据加密、身份认证、通话加密、通道加密等安全应用,并具有使用方便,易于部署的特点,从而开启了普及密码算法的大门。
ZUC祖冲之算法
祖冲之序列密码算法是中国自主研究的流密码算法,是运用于移动通信4G网络中的国际标准密码算法,该算法包括祖冲之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三个部分。目前已有对ZUC算法的优化实现,有专门针对128-EEA3和128-EIA3的硬件实现与优化。
主流CA机构
DigiCert:DigiCert,Symantec,Geotrust,Thawte,Rapid
Comodo
GlobalSign:GlobalSign、AlphaSSL
Sectigo:Sectigo, Positive SSL, Sectigo Enterprise
Certum
Entrust
中国金融认证中心CFCA
深圳市电子商务安全证书管理有限公司,深圳CA
浙江省数字安全证书管理有限公司,浙江CA
BaiduTrust
天威诚信:vTrus
华测电子,华测CA
国密SSL改造
升级国密算法HTTPS加密后必须兼容全球主流浏览器,确保网站兼容性、易用性和访问速度等性能指标,在升级过程中不能影响用户的访问体验。
国密浏览器
双SSL证书
在国密SSL支持模块或国密SSL网关同时部署SM2/RSA双SSL证书,由国密支持模块自动识别浏览器是否支持国密算法,自适应兼容密信浏览器、360浏览器等支持国密算法的浏览器,以及Chrome、火狐、IE、Safari等不支持国密算法的全球浏览器,有效解决浏览器兼容性问题,满足金融银行、电子政务等领域的国密算法SSL证书使用需求,真正实现基于国密算法的HTTPS网站全加密和身份可信。
域名SSL证书
域名SSL证书分类
DV SSL证书适合个人网站和小微企业,只需要验证域名的所有权,颁发速度快,最快十分钟就能完成。
OV SSL证书是政府机构、企业、事业单位等首选,个人无法申请。相比DV SSL证书仅有的加密功能,证书可以显示单位的真实信息,其验证方式更为严格,除了要验证域名管理权限还要验证企业的真实性,从申请到签发需要1-3个工作日。
EV SSL证书是是SSL证书中验证级别最高的https加密证书,是电商、银行、证券等金融或者其他对网站安全度和信任度有较高要求的单位的不二之选。其验证方式最为严格,可以让网站访客们很清楚地知道自己访问的网站真实性,可以极大地提高访客们的访问信心,让使用EV SSL证书的网站具有更好的转化率。
HTTPS性能
一个HTTPS网站的性能由很多因素构成,一个HTTPS网站性能存在瓶颈,将其归罪于TLS/SSL协议是不公平的。
如果一个HTTPS网站支持HTTP/2,那么带来的性能提升完全可以抵消TLS/SSL协议带来的性能损耗。从性能的角度看,HTTP和HTTPS在很多方面是相同的:
都是基于TCP网络模型,任何对于HTTP协议层的优化都适用于HTTPS。
浏览器请求、渲染、加载HTTP网站(HTTPS网站)的流程是一样的,任何对于HTTP应用层的优化也适用于HTTPS。和HTTP相比,TLS/SSL协议性能损耗主要包含两个方面:
增加了网络延迟,相比HTTP来说,TLS/SSL协议完整握手需要增加两个来回(RTT)。
服务器和客户端需要进行密码学运算,增加了设备的负载,削减了并行处理能力。
从TLS/SSL协议的角度出发,优化性能的途径就是:
尽量使用简短握手,减少网络延迟。
使用更快、更安全的密码学算法,必要的话可以使用硬件加速方案。
HTTPS性能优化方法
网络层优化
比如减少多路由导致延迟
重用连接/长连接
启用窗口缩放
应用层优化(适用于HTTP、HTTPS)
比如页面布局阻塞
HTTP队首阻塞
多个TCP连接
HTTP/2优化
TLS/SSL优化
尽量升级Linux内核版本、OpenSSL版本、Nginx等版本
TLS快速打开
TLS/SSL协议记录层长度优化
OCSP封套
证书链长度尽可能小
中间证书要小
使用ECC证书
配置完整的证书链
注意证书尽量不要包含过多主机名
更小的密钥长度(keysize)
加密算法的选择
自动化测试HTTPS网站
SSL Server Test
SSL Server Test工具是SSL Labs工具集中最重要的一个工具,用于测试服务器的HTTPS配置,主要测试服务器的安全级别,并对服务器的测试结果进行打分。通过该工具,能够知晓HTTPS部署是否存在一些问题,是否有必要进行一些调整。
www.ssllabs.com/ssltest/
除了评分,其他测试数据也非常重要,主要包含:
证书信息,包括服务器实体证书、中间证书、证书链、证书兼容性信息。
HTTPS配置信息,包括TLS/SSL协议版本、服务器支持的密码套件、客户端兼容性、协议细节等信息。
一个HTTPS网站,由客户端和服务器协同组成,HTTPS网站的性能和安全并不完全由服务器决定,客户端(此处主要指浏览器)的HTTPS配置也很重要。
使用SSL Client Test工具可以了解浏览器是否存在安全漏洞,了解浏览器支持的TLS扩展,了解浏览器支持的密码套件。
clienttest.ssllabs.com:8443/ssltest/vie…
browserleaks.com/ssl
《深入浅出HTTPS:从原理到实战》