签名/证书/CA

公钥私钥

是概念上的区分,发出去的为公钥,自己手上的为私钥,实际生成RSA秘钥时,其中一份包含另一份的完整信息成为私钥,且公私钥都可以做加密方和解密方

CA

CA是证书的签发机构,被称为证书授权中心,它是公钥基础设施(Public Key Infrastructure,PKI)的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。CA 拥有一个证书(内含公钥和私钥)

**根证书:**是CA认证中心给自己颁发的证书,是信任链的起始点,安装根证书意味对这个CA认证中心的信任

证书

采用第三方(CA证书商)担保,确保证书中发出来的公钥是服务器提供的,在用证书中服务器的公钥加密信息与服务器通信

证书颁发过程

>1.服务器把公钥和个人信息发送给证书商CA,证书商用私钥对其签名,形成CA证书,确保证书内的公钥是服务器提供的
>2.证书商把CA证书给服务器
>3.用户访问服务器,先向服务器申请证书,并用证书商的公钥解密,拿到服务器的信息和服务器公钥
>4.用户使用服务器公钥和服务器通信(由于非对称加密较慢,实际中服务器和客户端会相互协商,指定某对称加密秘钥来进行通信加密)
>5.用证书中的服务器公钥加密通信加密使用的对称秘钥

如何对数字证书进行校验

>要验证数字证书的真伪,就需要找到签发这个证书的CA证书,要验证CA证书的真伪则需要找到签发CA证书的CA证书,就这样一直找到根证书

CA的公钥一般来说由浏览器开发商内置在浏览器或操作系统的内部。于是,该前提条件在各种信任机制上,基本保证成立

SSL证书

称为服务器 SSL 证书,是遵守 SSL 协议的一种数字证书,由全球信任的证书颁发机构(CA)验证服务器身份后颁发。将 SSL 证书安装在网站服务器上,可实现网站身份验证和数据加密传输双重功能。SSL 协议及其继任者 TLS 协议,是一种实现网络通信加密的安全协议,可在客户端(浏览器)和服务器端(网站)之间建立一条加密通道,保证数据在传输过程中不被窃取或篡改

这个证书总共有 3 个测评等级,其中,EV SSL 证书最高,OV SSL 证书其次,而 DV SSL 证书最弱。DV SSL 证书只验证域名所有权,仅为加密传输信息的作用,并不能证明网站的真实身份;OV SSL 证书是需要验证网站所有单位的真实身份的标准型 SSL 证书,而 EV SSL 证书则是遵循全球统一严格身份验证标准办法的 SSL 证书,是目前业界最高安全级别的 SSL 证书。其中,OV SSL 主要在国内网站应用,而 EV SSL 则在国外网站应用更多。靠谱的商用网站一般都会部署 EV SSL 证书或 OV SSL 证书,绝对不会部署已经被欺诈网站滥用的 DV SSL 证书
SSL证书分类和文件种类

证书的分类

CA证书: 就是根证书。如果不安全该证书,即使安装了其他证书,浏览器也会提示不安全,但是在单向https认证中,该证书的安装是可选的。
服务器证书: SSL证书中必须要安装的证书之一,通过证书的key生成csr文件,然后再通过CA证书签名,生成服务器的证书。
客户端证书: 在双向https验证中,就必须有客户端证书,生成方式同服务器证书一样,单向证书则不用生成

证书的格式

CER:服务器证书、CA根证书链。CRT证书的微软型式,可以在微软系统环境下将.crt转换为.cer.both DER编码的.cer,或base64 [PEM]编码的.cer)。
KEY:私钥。KEY扩展名用于私钥。 键可以被编码为二进制DER或ASCII PEM。
CRT:中间证书、证书文件。可以是二进制格式,可以是文本格式,与 .DER 格式相同,不保存私钥。常用于 Apache,Nginx 等。CRT扩展用于证书。 证书可以被编码为二进制DER或ASCII PEM。 CER和CRT扩展几乎是同义词。 最常见的于Unix 或类Unix系统。
CSR:证书签名请求,认证请求由三个主要部分组成:认证请求信息、签名算法标识符和认证请求信息上的数字签名。第一部分包含重要信息,包括公钥。请求者的签名防止实体请求他人公钥的伪造证书。因此,生成CSR需要私钥,但私钥不是CSR的一部分。
PEM:一般是文本格式,可保存证书,可保存私钥。
DER .CER:文件是二进制格式,只保存证书,不保存私钥。
PFX .P12:二进制格式,同时包含证书和私钥,一般有密码保护。
JKS:二进制格式,同时包含证书和私钥,一般有密码保护。常用于 Weblogic,Tomcat,Jboss。
PFK:常用于 IIS 等。
KDB:常用于 IHS,Webspphere

SSL和TSL

提供的主要服务:

  1. 认证用户和服务器,确保数据发送到正确的客户机和服务器;
  2. 加密数据以防止数据中途被窃取;
  3. 维护数据的完整性,确保数据在传输过程中不被改变

SSL:

**Secure Socket Layer安全套接字层: **为Netscape所研发,用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

SSL协议可分为两层:

1.SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

2.SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等

TLS:

Transport Layer Security传输层安全协议:用于两个应用程序之间提供保密性和数据完整性

该协议由两层组成:TLS记录协议,TLS握手协议

TLS(传输层安全)是更为安全的升级版 SSL,由于 SSL 这一术语更为常用,因此我们仍然将我们的安全证书称作 SSL

TLS与SSL区别

  1. 版本号:TLS记录格式与SSL记录格式相同,但版本号的值不同,TLS的版本1.0使用的版本号为SSLv3.1。

  2. 报文鉴别码:SSLv3.0和TLS的MAC算法及MAC计算的范围不同。TLS使用了RFC-2104定义的HMAC算法。SSLv3.0使用了相似的算法,两者差别在于SSLv3.0中,填充字节与密钥之间采用的是连接运算,而HMAC算法采用的是异或运算。但是两者的安全程度是相同的。

  3. 伪随机函数:TLS使用了称为PRF的伪随机函数来将密钥扩展成数据块,是更安全的方式。

  4. 报警代码:TLS支持几乎所有的SSLv3.0报警代码,而且TLS还补充定义了很多报警代码,如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问(access_denied)等。

  5. 密文族和客户证书:SSLv3.0和TLS存在少量差别,即TLS不支持Fortezza密钥交换、加密算法和客户证书。

  6. certificate_verify和finished消息:SSLv3.0和TLS在用certificate_verify和finished消息计算MD5和SHA-1散列码时,计算的输入有少许差别,但安全性相当。

  7. 加密计算:TLS与SSLv3.0在计算主密值(master secret)时采用的方式不同。

  8. 填充:用户数据加密之前需要增加的填充字节。在SSL中,填充后的数据长度要达到密文块长度的最小整数倍。而在TLS中,填充后的数据长度可以是密文块长度的任意整数倍(但填充的最大长度为255字节),这种方式可以防止基于对报文长度进行分析的攻击。

TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。TLS 在SSL v3.0 的基础上,提供了以下增强内容:

  1. 更安全的MAC算法

  2. 更严密的警报

  3. “灰色区域”规范的更明确的定义

HTTPS单向认证

1.客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息;

2.服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书;

3.客户端使用服务端返回的信息验证服务器的合法性,包括:

  • 证书是否过期;

  • 发行服务器证书的CA是否可靠;(通过查询浏览器或本机内的CA证书)

  • 返回的公钥是否能正确解开返回证书中的数字签名;(通过使用本机或浏览器内置的CA公钥进行解密)

  • 服务器证书上的域名是否和服务器的实际域名相匹配;

  • 验证通过后,将继续进行通信,否则,终止通信;

4.客户端向服务端发送自己所能支持的对称加密方案,供服务器端进行选择;

5.服务器端在客户端提供的加密方案中选择加密程度最高的加密方式;

6.服务器将选择好的加密方案通过明文方式返回给客户端;

7.客户端接收到服务端返回的加密方式后,使用该加密方式生成产生随机码,用作通信过程中对称加密的密钥,使用服务端返回的公钥进行加密,将加密后的随机码发送至服务器;

8.服务器收到客户端返回的加密信息后,使用自己的私钥进行解密,获取对称加密密钥;
在接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信过程中信息的安全;

HTTPS双向认证

相对于单向认证,增加了服务端对客户端的认证

1.客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息;

2.服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书;

3.客户端使用服务端返回的信息验证服务器的合法性,包括:

  • 证书是否过期;

  • 发行服务器证书的CA是否可靠;(通过查询浏览器或本机内的CA证书)

  • 返回的公钥是否能正确解开返回证书中的数字签名;(通过使用本机或浏览器内置的CA公钥进行解密)

  • 服务器证书上的域名是否和服务器的实际域名相匹配;

  • 验证通过后,将继续进行通信,否则,终止通信;

4.服务端要求客户端发送客户端的证书即客户端证书公钥,客户端会将自己的证书发送至服务端;

5.验证客户端的证书,通过验证后,会获得客户端的公钥;

6.客户端向服务端发送自己所能支持的对称加密方案,供服务器端进行选择

7.服务器端在客户端提供的加密方案中选择加密程度最高的加密方式;

8.将加密方案通过使用之前获取到的公钥进行加密,返回给客户端

9.服务器收到客户端返回的加密信息后,使用自己的私钥进行解密,获取对称加密密钥;
在接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信过程中信息的安全;

10.服务端收到客户端发送的消息后,使用自己的私钥进行解密,获取对称加密的密钥,在接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信过程中信息的安全;

证书申请方式

阿里云

腾讯云

certbot::Let’s Encrypt是免费、开放和自动化的世界知名证书颁发机构,由非盈利组织互联网安全研究小组(ISRG)运营


签名/证书/CA
https://centyuan.github.io/2023/12/06/有趣的杂烩/签名证书CA/
作者
hlyuan
发布于
2023年12月6日
许可协议