🌸SSL数字证书基本介绍
相关基本概念
公钥密码体制
公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:
加密:通过加密算法和公钥对内容(或者说明文)进行加密,得到密文。加密过程需要用到公钥。
解密:通过解密算法和私钥对密文进行解密,得到明文。解密过程需要用到解密算法和私钥。
公钥密码体制的公钥和算法都是公开的(这是为什么叫公钥密码体制的原因),私钥是保密的。大家都以使用公钥进行加密,但是只有私钥的持有者才能解密。
加密算法
对称加密算法
特点:
1、加密使用的密钥和解密使用的密钥是相同的
2、不区分公钥和私钥
3、密钥要做好保密,不能对外公开
4、加解密效率高,而安全性就稍微弱一些,常见的算法例如AES,DES,AES,RC4,SM1,SM4
非对称加密算法
特点:
1、有两个密钥,加密使用的密钥和解密使用的密钥是不相同的。
2、公钥加密、私钥解密,私钥加密、公钥解密
3、安全性较高,但是效率低一些,常见的算法例如RSA,DSA,ECDSA,Rabin,DH,ECC,ECDH,SM2,SM9。
密钥,一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。前面在公钥密码体制中说到的公钥、私钥就是密钥,公钥是加密使用的密钥,私钥是解密使用的密钥。
信息摘要
特点
1、唯一性,不可逆
2、常见的算法例如MD5,SHA1,SHA2,SM3
密码破解
$1$ sha256 $5$ sha512
24个base64字符,最后两个==enc2(md5)
28个base64字符,最后一个=enc6(SHA1)、enc8(SMD5)
32个base64字符,且没有=enc8(SMD5)
40个base64字符,最后两个==enc7(SSHA)
SMD5是一种改进的MD5信息摘要算法。
MD5全名Message-Digest Algorithm 5,是一种128比特的信息摘要算法,用于生成信息的数字签名。但MD5已被证明存在弱点,容易遭到碰撞攻击。
SMD5在MD5的基础上做了以下改进:
增加了安全密钥
在原始数据的摘要计算中引入了用户自定义的密钥,增强了算法的安全性。
迭代次数增加
SMD5的迭代次数从MD5的64轮增加到1024轮,扩大了破解的难度。
摘要长度扩展
SMD5的摘要长度从128比特扩展到256比特,增加了碰撞的难度。
引入随机盐值
在计算摘要时加入随机盐值,即使相同的数据也会生成不同的摘要,提高了安全性。
支持自定义输出
支持自定义摘要值的字节输出长度,增加了应用灵活性。
CA即证书颁发机构
- Symantec - 开创SSL证书的先河,Verisign就是其子公司
- Comodo - 龙术网络,提供网站安全和证书服务
- DigiCert - 全球SSL证书市场占有率第一
- GlobalSign - 跨云服务供应商的数字证书首选
- GoDaddy - 全球最大的域名注册商兼证书商
- Network Solutions - 提供SSL证书和网站安全服务
- Trustwave - 专注于信息安全和合规性管理
- RapidSSL - 一家总部在美国的证书供应商
- SwissSign - 瑞士信任服务公司,瑞士国家级根证书
- CFCA- 国家互联网信息办公室授权的中国的权威根CA
- CNNIC - 中国互联网络信息中心,中国网管局下属机构
- GDCA - 广东 CA,国内较大的商业证书服务机构
根证书
受信任的根证书是属于证书颁发机构(CA)
中间证书
证书颁发机构(CA)不会直接从根目录颁发服务器证书(即SSL证书),因为这种行为是十分危险的,因为一旦发生错误颁发或者需要撤销root,则使用root签名的每个证书都会被撤销信任。
因此,为了避免这种风险发生,CA机构一般会引用中间根。CA机构使用其私钥对中间根进行签名,使浏览器信任中间根。然后CA机构使用中间根证书的私钥来签署用户申请的SSL证书。这种中间根的形式可以重复多次,即使用中间根签署另一个中间件,然后CA机构通过中间件签署SSL证书。
证书链
CA为了减轻自己的工作同时也是保护私钥的机密,打算招两级代理 A与B(也可以多招几级),A是一级代理,B是二级代理。这个时候C需要生成合法的证书,直接找B即可。
举例说明:
DigiCert 是根证书
DigiCert SHA2 Secure Server CA 是一级代理
*.zhihu.com 是知乎的ssl证书
SSL/TLS/HTTPS
SSL/TLS是网络通信中的一种安全协议,主要用于在客户端和服务器之间建立安全的加密连接。
SSL/TLS的全称是Secure Sockets Layer/Transport Layer Security,意思是安全套接字层/传输层安全协议。它通过使用证书来验证服务器的身份,并协商一个加密算法来加密客户端和服务器之间的通信内容,从而防止数据在网络上被窃听。
HTTPS是在HTTP协议的基础上加入SSL/TLS协议,通过CA证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
SSl/TLS原理
OSI七层模型 | TCP/IP四层概念模型 | 对应的网络协议或应用 |
---|---|---|
应用层(Application) | 应用层(Application) | HTTP, TFTP, FTP, NFS, WAIS, SMTP |
表示层(Presentation) | Telnet, SNMP | |
会话层(Session) | SSL, TLS, LDAP | |
传输层(Transport) | 传输层(Transport) | TCP, UDP |
网络层(Network) | 互联网层(Internet) | IP, ICMP, ARP |
数据链路层(Data Link) | 网络接口层(Network Interface) | FDDI, Ethernet, Arpanet, PDN, SLIP, PPP |
物理层(Physical) | IEEE 802.1A, IEEE 802.2, Ethernet v.2 |
加密握手过程
- 客户端向服务器发出连接请求,要求建立SSL/TLS连接。
- 服务器向客户端发送其数字证书,证书中包含服务器的公钥。
- 客户端验证服务器证书是否来自可信的证书颁发机构,如果证书有效,就提取公钥。
- 客户端生成一个随机的预主密钥,使用服务器的公钥对其进行加密,然后发送给服务器。
- 服务器使用自己的私钥解密出预主密钥。
- 客户端和服务器协商生成主密钥和会话密钥,用于后续的加密通信。
- 客户端和服务器利用密钥开始加密通信。
- 通信结束后, session结束,密钥被抛弃。
SSL证书等级和类型
证书等级
DV域名验证
OV企业验证
EV增强验证
公网IP证书
证书版本
单域名版
多域名版
通配符版
多域名通配
证书格式
标准 | 标准说明 | 证书格式 |
---|---|---|
X509 | 基本的证书格式,只包含公钥 | .DER .PEM .CER .CRT |
PKCS#7 | PKCS#7一般把证书分成两个文件,一个公钥、一个私钥;一般主要用来做数字信封 | .P7B .P7C .SPC .P7R |
PKCS#10 | 证书请求语法 | .p10 |
PKCS#12 | 一种文件打包格式,为存储和发布用户和服务器私钥、公钥和证书指定了一个可移植的格式,是一种二进制格式 | .pfx *.p12 |
Openssl生成自签名证书
自签证书链操作
自签证书包括两大步骤,第一步制作根证书,第二部制作应用证书。其中根证书用来签发应用证书。
1.制作根证书
openssl req -newkey rsa:2048 -keyout root.key -x509 -days 36500 -out root.pem
通过openssl命令生成root.key(私钥文件)和root.pem(根证书文件)。
2.生成应用证书私钥
openssl genrsa -aes256 -out app.key 2048
3.生成应用证书请求文件
openssl req -new -key app.key -out app.csr
4.用根证书签发应用证书
openssl x509 -req -sha256 -days 3650 -in app.csr -CA root.pem -CAkey root.key -CAcreateserial -out app.pem
这样,一共生成了根证书root.key,root.pem,应用证书 app.key, app.csr, app.pem
如果在windows平台下可以使用以下命令将pem格式的证书转换成windows可识别的证书:
openssl x509 -inform pem -in app.pem -out app.cer
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xieaoao@qq.com QQ:1296454177