PKI证书系统

news/2024/9/18 10:55:41/ 标签: SSL, 加密通信, SSL证书

1. 散列函数

1.1 定义

散列函数也叫做HASH函数,主流的散列算法有MD5与SHA-1。散列函数的主要任务是验证数据的完整性。通过散列函数计算得到的结果叫做散列值,这个散列值也常常被称为数据的指纹(Fingerprint)

1.2 日常生活中指纹的工作原理

1.3 散列函数的工作原理

目的:确保文件完整且不被篡改

1.4 散列函数的四大特点

  1. 固定大小输出:不论输入数据大小,散列函数输出固定长度

  2. 雪崩效应:输入数据微小变化导致输出大幅不同。

  3. 单向性:从输出难以推断原始输入。

  4. 冲突避免:不同输入产生相同输出的概率极低。

2. 对称与非对称密钥算法

2.1 对称密钥算法

2.1.1 介绍

使用相同密钥与算法进行加解密运算的算法就叫做对称密钥算法

2.1.2 对称密钥优点

  1. 速度快:相较非对称加密,处理更快速。

  2. 安全性强:在保持密钥安全的前提下,提供坚固的安全性。

  3. 结构紧凑:加密后几乎不变长

2.1.3 对称密钥缺点

  1. 明文传输共享密钥,容易出现中途劫持和窃听的问题。

  2. 随着参与者数量的增加,密钥数量急剧膨胀((n×(n-1))/2)。

  3. 因为密钥数量过多,对密钥的管理和存储是一个很大的问题。

  4. 不支持数字签名和不可否认性。

2.2 非对称密钥算法

2.2.1 介绍

非对称密钥算法的主流协议为RSA,需要每一个参与者产生一对密钥共享公钥到服务器,严格保障私钥的安全性。根据这种操作的特点,也被称作公共密钥系统

2.2.2 非对称密钥算法工作原理

  1. 公钥加密,私钥解密:加密

  2. 私钥加密,公钥解密:签名

2.2.3 非对称密钥优点

  1. 安全性高:私钥未公开,难以破解。

  2. 密钥分发安全:公钥可公开传输,无泄露风险。

  3. 密钥数量管理:每个用户维护一对密钥。

  4. 无需预建信任:公钥开放,无须事先信任或验证。

  5. 数字签名:确保消息真实性,防止否认。

2.2.4 非对称密钥缺点

  1. 速度慢:相较对称加密,处理速度较慢(比对称加密慢约1000倍)。

  2. 密文膨胀:加密后数据体积增大。

2.3 混合加密

3. 数字签名

3.1 数字签名的工作示意图

数字签名:用发起方的私钥加密明文的散列值

使用私钥加密公钥解密完成数据签名,实现完整性校验源认证不可否认性

4. 受信任的介绍

4.1 密钥管理面临的挑战

在使用任何基于RSA加密服务之前,一个实体需要真实可靠的获取其他实体的公钥。

  1. 通过非信任的通道,公钥交换必须是安全的:意味着即使公钥通过不安全的渠道(如互联网)进行交换,也必须保证其安全性

  2. 在密钥交换的过程中,公钥必须不能够被截获和更改:这强调了在公钥交换过程中防止中间人攻击的重要性。如果公钥被截获并更改,攻击者可以解密或篡改加密的信息。

  3. 交换呈现Full Mesh的复杂度:在一个拥有多个实体的网络中,如果每个实体都必须与其他所有实体交换公钥,这会导致“全网状”(Full Mesh)的复杂性。这意味着随着网络中实体数量的增加,所需的公钥交换次数呈指数级增长。

  4. 由最终用户来确认密钥有效性,非常不靠谱:普通用户可能缺乏必要的技术知识来验证公钥是否真实属于其声称的所有者,这可能导致安全风险。

4.2 手动密钥交换与确认

  1. 回读收到的密钥(指纹)通过一个安全的通道/途径:当一个实体收到另一个实体的公钥后,它会计算这个公钥的数字指纹(通常是一个散列值),然后通过一个被认为是安全的通道,如电话,验证这个指纹。电话被认为是安全的,因为它比较难以被数字方式截获或篡改。

电话被认为是安全的,因为它基于不同的技术和网络架构,与常用的数字通信渠道(如互联网)不同。电话通信往往更难被远程数字方式截获或篡改。电话线路通常不易受到常见的网络攻击,如中间人攻击或数据包嗅探。此外,电话交流还有一定的实时性和人工验证的特点,使得验证过程更难被自动化攻击或欺骗。然而,需要注意的是,电话通信并非完全安全,也存在被窃听或欺骗的风险 

        2.如果它是匹配的,说明密钥在传输中没有被更改:如果通过电话或其他安全通道回读的密钥指纹与接收到的公钥指纹一致,说明公钥在传输过程中未被更改,可以认为是安全的。

        3. 它不具备可扩展性:这种方法虽然安全,但在需要大量公钥交换的环境中不具可扩展性。对于每个交换的公钥都需要进行单独的带外验证,这在大规模应用中变得不切实际,特别是在涉及许多用户或系统的情况下。

4.3 受信任的介绍

  1. 用户A和用户B已经安全的交换了公钥(通过离线确认) -> A信任B的公钥

  2. 用户B和用户C已经安全的交换了公钥(通过离线确认) -> C信任B的公钥

  3. 结果:通过B的受信任的介绍,让A和C之间做了一次安全的公钥交换

5. 证书授权颁发机构(CA)

5.1. PKI(Public Key Infrastructure)

翻译过来就是公钥基础设施,可以理解为利用公钥技术为网络应用提供加密和数字签名等密码服务以及必需的密钥和证书管理体系。如果将证书类比为身份证,那么PKI(公钥基础设施)可以类比为整个身份验证系统或户籍管理系统。这个系统负责发行身份证、验证身份证的真实性和有效性,以及维护相关的身份信息和记录。它包括了发证机构、验证机构和相关的管理、规范和技术标准,确保身份证能被正确地发行和认证。

5.2. X.509

X.509是一种非常重要的标准,用于定义公钥证书的格式。这个标准是由国际电信联盟(ITU-T)作为公钥和私钥基础设施(PKI)的一部分提出的。X.509证书用于在网络上建立和验证实体的身份,通常用于SSL/TLS协议,确保互联网通信的安全。以下是X.509证书的一些关键特点:

  1. 证书结构:X.509证书包含了诸多信息,包括证书持有者的身份信息、公钥、颁发机构(CA)、有效期限和其他扩展等。

  2. 数字签名:证书由颁发机构(CA)使用其私钥进行数字签名,确保证书的真实性和完整性。接收方可以使用CA的公钥验证这个签名。

  3. 版本:X.509证书有几个版本,目前最常用的是版本3(V3)。V3增加了对扩展字段的支持,允许包含更多的控制信息,如使用约束、路径长度限制等。

  4. 使用场景:用于SSL/TLS协议来加密和验证网络通信,电子邮件加密(如S/MIME),VPN连接,代码签名等。

  5. 证书链:X.509证书通常在一个信任链中,从根CA证书开始,可能通过一个或多个中间CA,最终到达端点证书(例如网站的SSL证书)。

  6. 格式:通常以DER(二进制格式)或PEM(Base64编码格式)存储和传输。

X.509证书是现代安全通信的基石,广泛用于互联网安全和数字身份验证。

5.2 证书

  1. 用户A向CA提供个人或组织信息、公钥

  2. CA对信息和公钥计算hash值并使用私钥进行数字签名

  3. 信息公钥签名放在一起就是证书

6. 证书申请步骤

  1. 同步时间:时间是整个PKI系统的重中之重,必须要先确保参加PKI系统的设备和主机的时间同步。才能开始PKI的部署。

  2. 部署证书服务器:证书服务器是整个PKI系统的核心

  3. 客户端产生密钥:每一个实体在申请证书之前,需要预先产生RSA的密钥对。

  4. 验证证书服务器:每一个实体需要获取证书服务器的根证书,里包含证书服务器的公钥。获取了根证书后,可以通过fingerprint离线验证证书服务器。

  5. 申请个人证书:每一个实体发送自己的个人信息和公钥到证书服务器。

  6. 管理员对每一个证书请求进行审核,并且对个人信息和公钥内容进行数字签名,签名后的文件即为数字证书。

  7. 颁发数字证书:证书服务器把签名的证书颁发给实体。

  8. 交换公钥:交换证书,证明实体与公钥之间的关联,公钥的具体作用由运用来决定

7. 证书申请与吊销

7.1. 证书申请方式

  1. SCEP (Simple Certificate Enrollment Protocol) for VPN devices

    1. 主要用于在线证书申请。

    2. 主要由Cisco设计的技术。

    3. VPW设备PKI证书申请的工业标准。

    4. HTTP传输协议。

    5. 被绝大多数VPN和CA厂商支持。

    6. 为VPN设备(VPN最终用户)提供了简单而功能强大的证书申请方式。

  2. File-based (PKCS#10):这种方法涉及使用PKCS#10格式(证书签名请求,CSR)的文件。用户或组织生成一个包含公钥和身份信息的CSR文件,并将其发送给证书颁发机构(CA)。CA验证请求信息后,根据这个请求生成数字证书。这是一种常见的手动证书申请方法。

    1. 主要用户离线证书申请。

    2. 定义了证书请求的数据格式。

    3. 证书请求包括:

      1. DN(Distinguished name)个人信息

      2. Public key公钥

      3. Optional set of attributes其它属性

  3. Web-based (browser-to-CA):这种方法指的是通过网页浏览器直接向CA申请证书的方式。用户在浏览器中填写一个表单,提交必要的信息,CA在验证这些信息后直接通过网页颁发证书。这种方法适用于个人或小型组织,因为它简单、方便且不需要复杂的技术知识。

7.2. 证书吊销方式

7.2.1. CRL(证书吊销列表,Certificate Revocation List)

是由证书颁发机构(CA)维护的一个列表,用来记录已被吊销的数字证书。证书可能因为多种原因被吊销,如密钥泄露、证书持有者身份变更或者证书颁发机构政策变更等。CRL为证书的验证过程提供了重要信息,确保在数据传输中不使用无效或不安全的证书。

CRL的主要特点包括:

  1. 列表格式:CRL是一个经过数字签名的公开可访问的列表,其中包含了所有被该CA吊销的证书的序列号和吊销日期。

  2. 定期更新:CA定期更新CRL,以反映新的吊销信息。更新频率取决于CA的政策和吊销证书的频率。

  3. 分发方式:CRL可以通过各种方式分发,如通过HTTP、LDAP等协议在线访问,或作为文件下载。

  4. 验证过程:在使用数字证书进行身份验证或加密通信之前,应用程序或服务会检查该证书是否出现在CRL中。如果证书被列在CRL中,则会被视为不可信。

  5. 吊销原因:CRL可能包含关于为什么证书被吊销的信息,例如密钥妥协、CA妥协、证书持有者不再拥有所声明的域名等。

  6. 有效期限:CRL自身也有有效期限,过期后需要被新的CRL替换。

CRL的一个主要缺点是它们可能很快变得庞大和过时,特别是在大型网络环境中。为了应对这一问题,一种新的机制OCSP(在线证书状态协议,Online Certificate Status Protocol)被开发出来,以实时查询证书的状态。尽管OCSP在某些方面更高效,但CRL仍然被广泛使用,特别是在对即时性要求不高的场景中。

7.2.2. 查看CRL文件

打开链接,下载文件

使用openssl将文件内容重定向到crl_output.txt

openssl crl -in ~/Downloads/gsrsaovsslca2018.crl -inform DER -noout -text > crl_output.txt

查看crl_output.txt文件

Certificate Revocation List (CRL):Version 2 (0x1)                              // CRL的版本,这里是版本2,符合X.509 v2标准Signature Algorithm: sha256WithRSAEncryption // 使用SHA-256散列算法和RSA加密的签名算法Issuer: C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018 // 颁发者信息,表示由GlobalSign颁发Last Update: Jan 23 05:01:29 2024 GMT          // CRL的最后更新时间Next Update: Jan 30 05:01:28 2024 GMT         // CRL的下次更新时间CRL extensions:X509v3 Authority Key Identifier:F8:EF:7F:F2:CD:78:67:A8:DE:6F:8F:24:8D:88:F1:87:03:02:B3:EB // 颁发机构的密钥标识符X509v3 CRL Number:13498 // CRL的序列号
Revoked Certificates:Serial Number: 096F6C37EBAAC4FBD03C01F2Revocation Date: Jan  6 01:45:02 2024 GMT // 证书被吊销的日期和时间Serial Number: 24D7E0C628DB4A8FB303BB6FRevocation Date: Dec 22 07:15:02 2022 GMT // 同上...Serial Number: 424F644ADC23A18D966033FDRevocation Date: Dec 26 15:27:02 2023 GMTCRL entry extensions:X509v3 CRL Reason Code:Cessation Of Operation // 吊销原因:操作终止Serial Number: 0C52D5AA75B8911BC2296781Revocation Date: Jan 15 10:00:05 2024 GMTCRL entry extensions:X509v3 CRL Reason Code:Cessation Of Operation // 同上
.....
Signature Algorithm: sha256WithRSAEncryption // 签名是使用SHA-256散列算法生成的消息摘要,并且使用RSA加密算法进行加密。Signature Value:                        // 这是签名本身的值,以十六进制形式表示。它是CRL数据的散列(摘要)值,该散列值使用CA的私钥加密生成。在验证CRL时,接收方会使用相同的散列算法对CRL生成散列值,然后使用CA的公钥解密这个签名值,并将两者进行比较。如果散列值匹配,则证明CRL未被篡改,是可信的。数字签名是确保数据完整性和来源验证的重要机制。在CRL的上下文中,这确保了吊销列表是由合法的CA颁发且自发布以来未被更改。6d:f6:df:9c:4d:b5:76:2a:2f:c0:c5:9a:da:da:6b:9d:94:f7:fc:0a:7b:6a:9b:b9:ae:db:86:aa:96:91:52:23:c1:a1:ff:c0:a6:ca:d2:1a:5b:c8:3a:e8:82:92:ab:31:16:01:c7:d1:1a:2a:46:dd:81:e4:0b:d1:10:b5:e2:75:c6:df:e5:f6:fc:e9:f2:ba:7a:01:a0:32:79:42:e4:da:e9:37:91:c4:7a:a6:ed:e4:66:3e:59:2e:68:bd:1a:b4:8f:45:a4:fa:6c:8c:2d:9a:15:90:39:d2:33:0b:2d:43:af:e3:f4:8f:c1:e3:1f:6a:e3:61:8b:25:32:27:69:9d:ba:db:65:71:88:94:f1:09:00:c2:eb:d6:d7:04:67:82:b2:2c:66:05:f4:dd:bc:c9:fb:f9:bc:e6:bf:53:22:f4:00:35:fd:c4:9a:5d:60:ed:1d:99:04:d5:23:fa:fc:3f:d1:07:12:ab:6a:1a:e0:ca:9a:00:18:e6:4c:04:1c:3f:db:da:df:6b:4f:0a:63:ef:69:7f:a9:ff:02:09:ff:6e:85:5b:81:39:d1:4a:f0:ac:e6:1f:bb:49:53:b7:cf:49:14:c4:cd:17:13:7e:e1:ca:d5:e6:dc:0c:bc:fc:46:47:84:5e:f1:e0:c9:54:c1:58:20:0c:59:ec:b7:92:b2:72

7.3. OCSP (Online Certificate Status Protocol)

OCSP(Online Certificate Status Protocol,在线证书状态协议)是一种用于获取数字证书状态信息的网络协议,它提供了一种比传统的证书吊销列表(CRL)更有效、更及时的方式来验证数字证书的有效性。

OCSP的主要特点和工作原理如下:

  1. 实时验证:OCSP允许实时查询特定证书的状态,以确定它是否有效或已被吊销。

  2. 减少网络负担:与下载整个CRL相比,OCSP只需处理针对单个证书的查询,从而减少了网络流量和处理时间。

  3. OCSP服务器:证书颁发机构(CA)运行OCSP响应器(服务器),用于响应关于其颁发的证书状态的查询。

  4. 请求-响应机制:当需要验证证书时,客户端向OCSP服务器发送一个请求,包括要验证的证书的序列号。OCSP响应器检查该证书的状态,并返回一个响应,表明证书是有效的、被吊销的,或者状态未知。

  5. 数字签名:OCSP响应通常由CA或其受信任的代理签名,以确保响应的真实性和完整性。

  6. 应用场景:OCSP被广泛应用于需要快速验证证书状态的场景中,如TLS/SSL握手过程中的服务器和客户端证书验证。

  7. 与CRL的区别:与CRL相比,OCSP提供更快、更即时的证书状态更新,但需要可靠的网络连接到OCSP服务器。

OCSP的一个缺点是它可能导致隐私问题,因为OCSP查询暴露了用户正在尝试访问特定服务的信息。为了缓解这个问题,一种称为OCSP Stapling的技术被开发出来,通过这种方式,服务器周期性地从CA获取OCSP响应,并在TLS握手过程中直接提供给客户端,从而减少了对OCSP服务器的直接查询。

7.3.1. 请求OSCP

openssl s_client -connect m.dring.com.cn:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > m_dring_com_cn_cert.pem

获取CA的公钥并保存成 TrustAsia.pem

查询证书状态

openssl ocsp -issuer TrustAsia.pem -cert m_dring_com_cn_cert.pem -url http://ocsp.trust-provider.cn -resp_text -noverify
OCSP Response Data:OCSP Response Status: successful (0x0) // OCSP查询成功Response Type: Basic OCSP Response // 基本OCSP响应类型Version: 1 (0x0) // OCSP响应的版本号,这里是1Responder Id: 5F3A7C11107E0C677161DC8BA3B5000367F5571C // OCSP响应器的标识符Produced At: Jan 22 01:36:32 2024 GMT // OCSP响应生成的时间Responses:Certificate ID:Hash Algorithm: sha1 // 用于生成证书ID的散列算法,这里是SHA-1Issuer Name Hash: 0386F8E67CC75256C1D9F6EE76A7D8EABB7ADDF2 // 颁发者名称的散列值Issuer Key Hash: 5F3A7C11107E0C677161DC8BA3B5000367F5571C // 颁发者公钥的散列值Serial Number: 33B7D67612D4591CD17AC765B73302D8 // 被查询证书的序列号Cert Status: good // 证书状态,这里显示为“good”即有效This Update: Jan 22 01:36:32 2024 GMT // OCSP状态信息的更新时间Next Update: Jan 29 01:36:31 2024 GMT // 下次OCSP状态更新的预期时间Signature Algorithm: sha384WithRSAEncryption // OCSP响应的签名算法,这里是SHA-384与RSA加密Signature Value: // 签名值,以下为签名的具体内容93:aa:08:28:4e:a5:29:1d:eb:89:84:5d:c8:60:c2:a6:9d:a3:...[更多的签名数据]m_dring_com_cn_cert.pem: good // 针对特定证书的状态,这里同样显示为“good”This Update: Jan 22 01:36:32 2024 GMT // 该证书状态的当前更新时间Next Update: Jan 29 01:36:31 2024 GMT // 该证书状态的下次更新时间

8. PKI架构

主LDAP(主LDAP目录服务):

  • 主LDAP目录服务是PKI体系中的主要信息存储和访问点,它存储包括证书、公钥、用户信息等关键数据。

  • 管理工具允许管理员配置LDAP服务器,包括添加新记录、更新现有数据和删除过时信息。

  • 初始化工具通常用于部署LDAP服务时的最初设置,包括目录树的创建和基本配置。

  • 客户端工具是指允许用户或应用程序查询LDAP服务器以获取信息的软件,例如检索证书或验证用户信息。

从LDAP(从LDAP目录服务):

  • 从LDAP服务提供一个数据复制,确保主LDAP服务器的数据有备份,提高系统的健壮性和可用性。

  • 管理系统允许对从LDAP进行监控和维护,确保数据的同步和一致性。

  • LDAP用户查询WEB是一个用户接口,允许非技术用户通过网页形式查询LDAP中的信息,例如检索某个证书的状态或细节。

CA系统(CA管理系统):

  • CA管理系统是核心组件,负责处理证书的申请、签发、续签、撤销等所有生命周期事件。

  • CADB(证书数据库)存储所有证书相关数据,包括证书的状态、有效期和关联的用户信息。

  • CA签发服务执行证书的生成和签名过程,确保证书的可信性和合法性。

  • 加密机是一个专用的硬件设备,用于执行加密操作,包括生成密钥对、保护私钥和加密数据。

KM系统(密钥管理系统):

  • 密钥管理系统负责整个PKI体系的密钥生命周期管理,包括密钥的生成、分发、更新、备份和销毁。

  • 该系统确保所有密钥操作都符合安全策略和法规要求,防止密钥泄露或未经授权的使用。

OCSP(在线证书状态协议服务):

  • OCSP服务允许实时地查询一个证书的吊销状态,而不必下载整个CRL(证书撤销列表)。

  • OCSP查询WEB界面允许用户通过浏览器查询特定证书的状态。

  • 加密机在OCSP服务中处理所有加密和签名操作,确保响应的安全性。

RA系统(注册管理系统):

  • RA服务作为CA的前端,处理证书申请和用户注册,为用户提供一个与CA交互的界面。

  • RADB(注册数据库)存储用户提交的申请数据,包括个人信息和证书请求信息。

  • RA管理系统提供了后台工具,用于处理和审核证书申请,确保证书的签发符合组织的政策和标准。

  • 用户自主服务系统让用户能够自行管理他们的证书,包括申请更新和撤销。

  • 受理点服务系统为用户提供了一个实体的或者在线的前端,处理现场或远程的证书申请和领取。

加密机

加密机(通常称为硬件安全模块,HSM)在PKI架构中扮演着至关重要的角色。它是一个物理设备,专门设计用来提供高安全性的密钥管理和加密操作。加密机的主要作用包括:

  • 密钥生成:在一个安全的环境中生成密钥,确保密钥在生成过程中不被泄露。

  • 密钥存储:安全地存储密钥,通常在一个受到物理和逻辑保护的环境中,防止未授权访问和密钥泄露。

  • 加密和解密:执行加密操作以保护敏感数据的传输,以及解密操作以访问受保护的数据。

  • 数字签名:使用存储在HSM中的私钥来对数据进行数字签名,确认数据来源并确保数据完整性。

  • 签名验证:使用公钥验证数字签名,以确保数据未被篡改且签名确实来自声称的发送者。

  • 密钥备份和恢复:在发生灾难或系统失败时,能够安全地备份和恢复密钥。

  • 密钥注销和销毁:在密钥到达生命周期结束或不再需要时,安全地使密钥失效和销毁。

  • 加密处理:在OCSP和CA操作中,加密机提供必要的密钥加密和解密服务,如加密OCSP响应或CA签发的证书。

​​​​​​
  1. 安全性:加密机是为安全处理密钥和加密操作而专门设计的硬件设备。它们通常具有物理和逻辑防护措施,可以抵抗各种攻击,包括物理入侵、侧信道攻击和网络攻击。相比之下,普通计算机更容易受到恶意软件和网络攻击的影响。

  2. 密钥保护:加密机确保密钥在硬件中生成和存储,且密钥不离开加密机。这意味着即使设备被侵入,密钥也不会被盗取。而在普通计算机上,密钥可能需要在内存中处理,存在被窃取的风险。

  3. 合规性和认证:许多行业标准和法规要求使用加密机来保护敏感数据和操作。例如,支付卡行业数据安全标准(PCI DSS)就要求在某些情况下使用加密机。

  4. 性能:专用的加密机通常针对加密操作进行了优化,能够提供比普通计算机更高的性能。这在处理大量加密操作时尤其重要。

  5. 可靠性和可用性:加密机通常设计为高度可靠和持久的设备,能够在连续运行和高负载的环境下保持稳定性。

根CA服务

在PKI(公钥基础设施)架构中,根CA(根证书颁发机构)服务是整个证书体系的顶点。根CA服务的作用包括:

  • 信任锚点:根CA作为最高级别的CA,是整个信任链的基础。它的证书(根证书)通常是手动安装在操作系统、应用程序或设备中,作为信任锚点,用于验证下级CA证书和最终用户证书的有效性。

  • 证书签发:根CA服务负责签发下级CA的证书,也就是中间CA或子CA的证书。这些中间CA再签发给终端实体(如服务器、用户、设备)的证书。

  • 策略和标准制定:根CA定义了整个PKI体系的策略和标准,包括证书的签发准则、验证程序、证书格式和使用等。

  • 密钥和证书管理:根CA管理自己的密钥对(公钥和私钥),以及签发的证书。它需要确保自己的密钥极其安全,因为它的密钥是验证整个PKI体系证书的关键。

  • 撤销列表维护:根CA负责生成和发布CRL(证书吊销列表),列出所有被撤销的证书。

这些组件共同构成了PKI的基础设施,确保了整个系统的安全性、可靠性以及用户的便利性。

9. 自建CA

9.1. 为什么要用自建CA

使用自建CA(也叫自建PKI)的原因包括

  1. 安全性:自建CA允许组织完全控制数字证书的签发和管理过程,从而提高了安全性。组织可以确保证书仅颁发给合法用户和设备,降低了风险。

  2. 自主性:自建CA使组织能够自主管理其证书颁发政策和流程,以满足特定的安全需求和合规性要求。这允许组织根据其具体需求进行定制。

  3. 成本效益:自建CA可以降低数字证书管理的成本,特别是对于大型组织而言。它消除了对第三方CA服务的依赖,从而减少了相关费用。

  4. 内部控制:组织可以在内部建立CA,以确保对其加密和身份验证过程的完全控制。这有助于防止外部侵入和数据泄露。

  5. 合规性:某些行业和法规要求组织实施自建CA以满足特定的合规性要求。自建CA使组织能够更好地符合这些法规。

  6. 自定义证书属性:自建CA允许组织定义和包含自定义属性在数字证书中,以满足其特定需求。这对于某些应用程序和用例非常重要。

9.2. 自建CA的功能

  1. 数字证书签发:自建CA的主要功能是签发数字证书。这些证书通常包括SSL/TLS证书、S/MIME证书、代码签名证书等。数字证书用于验证个体、服务器或应用程序的身份,以确保安全通信。

  2. 密钥管理:自建CA负责生成和管理公钥和私钥对。它可以生成新的密钥对,注销或更新已有密钥对,并确保密钥的安全存储。

  3. 身份验证:CA验证数字证书申请者的身份信息,以确保证书中包含准确的信息,并且只有合法的实体可以获得证书。

  4. 证书存储和分发:自建CA负责存储和分发签发的数字证书。这通常涉及到建立证书仓库或目录服务,使证书能够被其他实体访问和验证。

  5. 证书吊销:自建CA可以吊销数字证书,如果证书持有者的私钥被泄露或证书信息需要更新,CA会发布吊销列表(CRL)或提供在线证书状态协议(OCSP)来通知其他实体证书的吊销状态。

  6. 证书策略:CA定义了证书颁发政策(CP)和证书实践声明(CPS),其中包含了签发证书的规则和标准,以确保一致性和安全性。

  7. 安全审计和监管:自建CA需要进行安全审计和监管,以确保其操作符合法规和最佳实践,并保护私钥不受未经授权的访问。

  8. 证书更新和续订:CA负责证书的定期更新和续订,以确保证书的有效性和安全性。

  9. 密钥恢复:在某些情况下,CA可能需要提供密钥恢复服务,以帮助证书持有者重新获得访问被丢失或损坏的私钥的能力。


http://www.ppmy.cn/news/1507486.html

相关文章

3D开发工具HOOPS如何实现数字孪生高效的模型设计和分析?

数字孪生技术通过创建物理对象或系统的虚拟模型&#xff0c;实时反映其状态和行为&#xff0c;从而实现监控、优化和预测。这一技术在智能制造、建筑、城市规划等领域有着广泛应用。HOOPS SDK作为一套功能强大的软件开发工具包&#xff0c;为数字孪生技术的实现提供了全面支持。…

rk3568 android12 hdmi、耳机、喇叭音频切换

文章目录 前言一、耳机extcon状态的上报处理1.1、驱动1.2、封装切换接口二、hdmi音频extcon状态的上报处理2.1、驱动2.2、 封装切换接口三、喇叭状态的处理3.1、驱动3.2、 封装切换接口四、驱动创建切换音频的文件节点4.1、添加驱动4.2、切换音频驱动代码实现4.3、通过命令对切…

计算机网络408考研 2014

1 计算机网络408考研2014年真题解析_哔哩哔哩_bilibili 1 111 1 11 1

【模电笔记】——集成运算放大电路

tips&#xff1a;本章节的笔记已经打包到word文档里啦&#xff0c;建议大家下载文章顶部资源&#xff08;有时看不到是在审核中&#xff0c;等等就能下载了。手机端下载后里面的插图可能会乱&#xff0c;建议电脑下载&#xff0c;兼容性更好且易于观看&#xff09;&#xff0c;…

SpringBoot排除默认日志框架

默认用的logback application.properties中的配置无需改变,自动装配会根据条件(哪个日志的.class是否存在) 进行切换 只要切换日志配置文件就好 比如原来使用的logback-spring.xml换成log4j2-spring.xml 日志文件网上找找

【数据结构-前缀哈希】力扣525. 连续数组

给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组&#xff0c;并返回该子数组的长度。 示例 1: 输入: nums [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。 示例 2: 输入: nums [0,1,0] 输出: 2 说明: [0, 1] (或 [1, 0]) 是…

C++常用的设计模式和内存管理

C++常用的设计模式和内存管理 1. 设计模式 设计模式是在软件工程中解决常见问题的一种标准化方法。它们为特定情境下的问题提供了一种经过验证的解决方案,这些模式可以帮助提高代码的可读性、可维护性和可复用性。C++作为一种强大的面向对象语言,非常适合应用设计模式来构建…

(限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!

目录 haproxy七层代理详解一、负载均衡1.1 什么是负载均衡1.2 为什么使用负载均衡1.3 负载均衡类型1.3.1 硬件负载1.3.2 四层负载1.3.3 七层负载1.3.4 四层与七层的区别 二、haproxy介绍2.1 haproxy简介2.2 haproxy特性 三、haproxy详细部署3.1 实验所用的环境3.2 软件安装3.3 …

【Python】网络编程

计算机网络的介绍 计算机的发展经历了以下几个阶段&#xff1a; 阶段时间物理器件第一阶段1946年到20世纪50年代后期电子管第二阶段20世纪50年代后期到20世纪60年代中期晶体管第三阶段20世纪60年代中期到20世纪70年代初期中小规模集成电路第四阶段20世纪70年代初期至今大规模…

【机器学习】卷积神经网络简介

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 卷积神经网络简介1. 引言2. CNN的基本概念2.1 什么是卷积神经网络2.2 CNN与传统…

摘下自闭症帽子,点亮新生活:康复故事分享

在生活的舞台上&#xff0c;有一群特殊的孩子&#xff0c;他们曾被自闭症的阴影所笼罩&#xff0c;但通过不懈的努力和坚持&#xff0c;最终成功摘下了这顶沉重的帽子&#xff0c;迎来了充满希望和光明的新生活。今天&#xff0c;让我们走进他们的世界&#xff0c;分享那些感人…

自学-网络安全

自学网络安全是一个既具挑战性又充满机遇的过程。网络安全是一个庞大的领域&#xff0c;涵盖了网络架构、操作系统安全、程序安全、数据安全、社交工程学、密码学等多个方面。为了系统地学习网络安全&#xff0c;以下是一份详细的自学指南&#xff0c;旨在帮助初学者从零开始&a…

C++ primer plus 第17 章 输入、输出和文件:文件输入和输出03:文件模式:二进制文件

系列文章目录 17.4.5 文件模式 程序清单17.18 append.cpp 程序清单17.19 binary.cpp 文章目录 系列文章目录17.4.5 文件模式程序清单17.18 append.cpp程序清单17.19 binary.cpp17.4.5 文件模式1.追加文件来看一个在文件尾追加数据的程序。程序清单17.18 append.cpp2.二进制文…

VC 与 VS(visual studio) 的对应版本

VC 与 VS 对应版本的关系&#xff1a; VC9&#xff1a;对应的是 Visual Studio 2008 版本。在这个版本中&#xff0c;开发环境提供了一系列的新特性和改进&#xff0c;为开发者提供了更高效的编程体验。例如&#xff0c;增强了对 C 标准的支持&#xff0c;优化了调试工具等。 …

Android顶部标题栏自定义,添加按钮

1. 先写一个标题栏的layout, 放在工程的res/layout下&#xff0c;如下: <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_par…

EF8 学习过程中的问题和解决方案

一、varchar类型字段如果为null 无法使用contains来判断是否包含字符串 1. 有问题的代码&#xff1a; contractList _dbcontext.contractHeads.Where(u > u.code.Contains(queryStr) || u.name.Contains(queryStr) || u.companyName.Contains(queryStr) || u.customerNa…

npm install报错npm ERR! Maximum call stack size exceeded

npm install报错npm ERR! Maximum call stack size exceeded 报错1 npm ERR! Maximum call stack size exceeded报错2 npm ERR! code ETIMEDOUT npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/babel%2fplugin-syntax-optional-catch-bi…

我一周的周任务 提前完成啦

学习目标&#xff1a; 提示&#xff1a;web前端工程师 例如&#xff1a; 每天将解决问题的思路以及方法 发布博客 手敲思路 学习内容&#xff1a; 提示&#xff1a;vue3的多图上传移除 思路&#xff1a;其实很简单&#xff0c;将移除事件api返回的fileList 切割前缀 再将原…

Spring MVC原理:掌握Web开发的核心技术

引言 在现代Web开发领域&#xff0c;Spring框架无疑占据着举足轻重的地位。其中&#xff0c;Spring MVC作为Spring框架中的一个重要组成部分&#xff0c;为构建响应用户请求、处理业务逻辑以及渲染视图的Web应用程序提供了强大的支持。本文将深入探讨Spring MVC的工作原理及其…

spingboot mongoDB实现文件的上传、下载、预览

pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…