文章目录
- 1. PKI 概况
- 1.1 PKI 简介
- 1.2 CA 介绍
- 1.2.1 CA证书包含主要内容
- 1.2.1 CA 的工作原理
- 1.2.2 主流的CA机构
- 1.4 PKI 应用场景
- 2. PKI 在物联网领域中的应用
- 2.1 物联网PKI架构包含组件
- 2.2 物联网PKI证书链
- 3. 创建自签CA证书
- 3.1 自签名根证书创建
- 3.2 创建云平台证书
- 3.3 创建项目设备二级根证书
- 3.4 创建设备证书
- 4. 总结
1. PKI 概况
1.1 PKI 简介
PKI(Public Key Infrastructure,公钥基础设施)是一种数字证书体系结构,用于管理和分发数字证书,以确保通信安全和身份验证。PKI采用了公钥密码学来提供保密性、完整性、认证和不可否认性等安全服务。
PKI主要组件:
-
证书颁发机构(CA):CA是负责颁发数字证书的可信机构。它验证证书请求者的身份,并为其生成数字证书。CA还负责管理证书吊销列表(CRL),以确保吊销被撤销或不再使用的数字证书。
-
数字证书:数字证书是一种由CA颁发的证明证书请求者身份的数字凭证。数字证书包含证书请求者的公钥、证书有效期和证书签名等信息。
-
公钥:公钥是由数字证书包含的证书请求者的公共密钥,用于加密和解密数据。
-
私钥:私钥是证书请求者保留的私有密钥,用于对接收到的加密数据进行解密和签名。
-
证书吊销列表(CRL):CRL是由CA维护的列表,其中包含被吊销或失效的数字证书列表。接收者可以使用CRL来验证数字证书是否有效。
-
证书状态协议(OCSP):一种用于在线验证数字证书状态的协议。
关于PKI与CA往往容易混为一谈,一言以蔽之,PKI 是一种安全机制,通过使用公钥密码学的数字证书实现安全通信。CA 是 PKI 的核心组成部分之一,负责颁发和管理数字证书,以确保数字证书的真实性和有效性。CA 证书是 CA 自身的数字证书,用于验证 CA 的身份和公钥。数字证书是由 CA 颁发的,用于验证持有人的身份和提供加密服务。
1.2 CA 介绍
证书颁发机构(CA)在整个PKI体系中扮演了非常关键的角色。它是公钥基础设施的核心组成部分,负责验证和颁发数字证书,以确保通信安全和身份验证。在PKI体系中,每个用户和系统都有一对公钥
和私钥
。公钥可以向任何人公开,而私钥应该严格保密。数字证书是一个包含公钥的文件,由证书颁发机构签名,以证明公钥属于特定用户或实体。证书颁发机构还负责验证证书请求者的身份,并将证书信息发布到证书仓库中,以供其他人验证。
1.2.1 CA证书包含主要内容
- 公钥:CA 证书中包含 CA 的公钥,用于验证由 CA 签名的证书。
- 签名:CA 证书被数字签名,以保证其真实性和完整性。签名是由 CA 的私钥生成的,因此只有拥有 CA 的私钥的人才能签署有效的 CA 证书。
- 有效期:CA 证书包含其颁发日期和过期日期。证书在过期日期之前可用,过期后必须重新颁发。
- 发行者信息:CA 证书包含发行者的信息,如组织名称、联系人信息、国家和地区等。
- 主题信息:CA 证书包含主题的信息,即该证书所代表的实体的信息,如组织名称、联系人信息、国家和地区等。
- 其他扩展:CA 证书可以包含其他扩展信息,如证书策略、密钥用途、扩展密钥用途等。
1.2.1 CA 的工作原理
- 验证请求者身份:证书颁发机构验证证书请求者的身份,确保其合法性和真实性。
- 颁发数字证书:CA使用证书模板生成数字证书,包括证书有效期、公钥、证书序列号、证书颁发机构的名称等信息。
- 数字签名:CA使用其私钥对数字证书进行签名,以证明证书的真实性和完整性。
- 证书吊销:如果数字证书被吊销或失效,证书颁发机构将其添加到证书吊销列表(CRL)中,并将CRL分发给信任的实体。
- 证书更新:证书颁发机构负责更新数字证书,确保其仍然有效并反映实体的当前状态。
1.2.2 主流的CA机构
- Symantec(前身为VeriSign):Symantec是全球最大的CA机构之一,提供数字证书、SSL证书和其他安全服务。
- Comodo:Comodo是全球领先的数字证书颁发机构之一,提供各种类型的数字证书,包括SSL证书、代码签名证书和电子邮件证书等。
- GlobalSign:GlobalSign是一家数字证书颁发机构,提供各种数字证书,包括SSL证书、代码签名证书、身份验证证书和设备证书等。
- DigiCert:DigiCert是一家数字证书颁发机构,提供各种类型的数字证书,包括SSL证书、代码签名证书和身份验证证书等。
- Let’s Encrypt:Let’s Encrypt是一个非营利性的数字证书颁发机构,提供免费的SSL/TLS证书。
- Trustwave:Trustwave是一家全球领先的数字证书颁发机构,提供数字证书、SSL证书和其他网络安全服务。
- GoDaddy:GoDaddy是一家提供各种互联网服务的公司,包括域名注册、SSL证书和其他数字证书等。
在PKI体系中,任何组织或个人都可以扮演CA机构的角色,只是不同的组织或个人扮演的CA机构角色的可信度有高有低,通常组织或个人自己扮演CA机构签发的证书称之为自签发证书。使用自签发证书存在一些问题,其中最主要的问题是信任。由于自签发证书没有经过第三方机构的验证和认证,因此在公共环境中,它们很容易被攻击者伪造和篡改,从而引发安全风险。此外,自签发证书也无法与其他系统和应用程序的证书进行互操作,因为它们没有被信任的第三方证书颁发机构所签名。以下是自签发证书可能面临的其他问题:
- 安全风险:自签发证书容易被攻击者伪造和篡改,从而导致中间人攻击和数据泄露等安全问题。
- 不受信任:自签发证书未被受信任的第三方证书颁发机构签发,因此它们可能不被其他系统和应用程序所信任。
- 互操作性问题:自签发证书无法与其他系统和应用程序的证书进行互操作,因为它们没有被信任的第三方证书颁发机构所签名。
- 管理复杂性:自签发证书需要自己管理,包括更新证书、管理证书吊销列表等,这增加了管理复杂性和工作量。
使用自签发证书部署到互联网给用户直接使用存在信任问题、安全问题。但是对于一些内部系统或者与外界没有交互的系统中采用自签发证书,能够解决内部系统信任问题,可以节省大量的证书采购费用,且又能在一定程度上保障系统的安全性。
1.4 PKI 应用场景
- 数字签名:数字签名是一种验证文件或数据完整性和真实性的方法,通过将文档哈希加密并用私钥签名,证明文件的来源和完整性。数字签名通常用于电子商务、合同签署和法律文件等领域。
- SSL/TLS加密通信:SSL/TLS协议是用于保护Web通信的协议。PKI系统用于验证SSL/TLS证书的有效性和可信度,从而确保加密通信的安全性。
- VPN安全连接:虚拟私人网络(VPN)是一种用于加密和保护远程连接的技术。PKI系统用于验证客户端和服务器证书的有效性,从而确保VPN通信的安全性。
- 数字身份验证:PKI系统可以用于数字身份验证,包括电子邮件、登录和访问控制等。数字证书可以用于证明用户的身份,并提供加密和签名功能来保护通信的安全性。
- 移动设备安全:PKI系统可以用于保护移动设备的安全性,包括移动设备管理、应用程序签名和安全数据存储等。通过使用数字证书和加密技术,可以确保移动设备的安全性和可靠性。
2. PKI 在物联网领域中的应用
随着物联网的蓬勃发展,对安全性的要求逐渐提高,PKI在物联网中的应用也越来越多。常见物联网平台PKI体系架构如下图所示;
首先从CA机构获取根证书,用于整个物联网云平台的证书签发以及物联网设备证书签发。项目云平台二级证书用于云平台,项目设备二级根证书用于给每个设备签发独立的设备证书。双向认证时云端的负载均衡服务或网关需要获取设备证书用于完成对设备的验证,由于设备数量众多,如何验证设备证书是否合法?CA证书采用链式认证,只需要将签发设备证书的项目设备二级根证书配置到云平台负载均衡服务或网关,使用项目设备二级根证书来验证其颁发的所有设备证书,验证通过表示设备可信。
2.1 物联网PKI架构包含组件
- 物联网设备:物联网设备是物联网PKI架构的核心组件。它们需要能够处理数字证书和加密算法,并支持安全通信协议,如TLS(Transport Layer Security)和DTLS(Datagram Transport Layer Security)。
- CA(证书颁发机构):物联网PKI架构需要至少一个CA,用于颁发和管理数字证书。由于物联网设备通常是低功耗设备,因此需要CA提供轻量级的证书管理和验证服务。
- RA(注册机构):RA负责管理数字证书的注册过程。在物联网PKI架构中,RA可以与CA合并,以减少复杂性和延迟。
- 证书吊销列表(CRL):CRL用于记录已撤销的数字证书,以防止已丢失或被盗用的设备继续使用其数字证书。
- OCSP(在线证书状态协议):OCSP是一种用于在线验证数字证书状态的协议,可以快速确定数字证书是否已被撤销。
- IoT网关:IoT网关是物联网PKI架构中的重要组件。它可以充当设备和网络之间的中间件,为设备提供连接和安全性,包括数字证书管理和验证等。
- 安全通信协议:物联网设备通常使用一些安全通信协议,如TLS和DTLS等,以确保通信的机密性和完整性。
2.2 物联网PKI证书链
PKI证书链是由一系列数字证书组成的层级结构,用于验证数字证书的真实性和可信度。PKI证书链通常由以下三个组件组成:
- 根证书:根证书是PKI证书链中的顶级证书,由根CA颁发。根证书的公钥是一个信任锚点,用于验证下级证书的真实性和可信度。
- 中间证书:中间证书是由根证书颁发的,它们用于验证下一级证书的真实性和可信度。中间证书通常由中间CA颁发。
- 服务器证书:服务器证书是由中间证书颁发的,它们用于验证特定服务器的真实性和可信度。服务器证书包含服务器的公钥、颁发者的信息和有效期等。
- 终端设备证书:终端设备证书是由中间证书颁发的,它们用于验证特定终端设备的真实性和可信度。终端设备证书包含终端设备的公钥、颁发者的信息和有效期等。
当客户端连接到一个使用SSL/TLS协议的服务器时,服务器会向客户端发送其数字证书。客户端根据数字证书链来验证服务器证书的真实性和可信度。客户端首先使用根证书的公钥来验证中间证书的真实性和可信度,然后使用中间证书的公钥来验证服务器证书的真实性和可信度。如果证书链上的任何一个证书无效或已被撤销,则客户端将拒绝连接服务器。
在PKI证书链中,每个证书都是由下一级证书签名的。这意味着,如果中间CA的私钥被泄露,攻击者可以签署伪造的证书,并伪装成受信任的服务器或网站。为了防止这种情况发生,PKI证书链的每个证书都需要定期更新和撤销,并使用安全存储设备来保护私钥的安全性。
3. 创建自签CA证书
3.1 自签名根证书创建
- 创建根证书私钥,此命令将生成一个 2048 位的 RSA 私钥文件 ca.key。
openssl genrsa -out ca.key 2048
- 生成自签名的 CA 证书,此命令将使用 CA 私钥 ca.key 生成一个新的自签名的 X.509 格式的 CA 证书 ca.crt。
openssl req -new -x509 -key ca.key -out ca.crt
3.2 创建云平台证书
- 创建云平台证书私钥,生成 server.key 私钥
openssl genrsa -out server.key 2048
- 创建证书申请文件,生成 server.csr 申请文件
openssl req -new -key server.key -out server.csr
- 签发云平台证书,生成 server.crt 证书
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
3.3 创建项目设备二级根证书
- 创建私钥 intermediate.key 文件
openssl genrsa -out intermediate.key 2048
- 创建证书请求文件
openssl req -new -key intermediate.key -out intermediate.csr
- 创建项目设备二级根证书
openssl x509 -req -in intermediate.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out intermediate.crt -days 3650
使用 -req 参数指定输入的是证书请求,使用 -in 参数指定证书请求文件名,使用 -CA 参数指定签署证书的 CA 证书文件名,使用 -CAkey 参数指定签署证书的 CA 私钥文件名,使用 -CAcreateserial 参数创建序列号文件,使用 -out 参数指定输出文件名,使用 -days 参数指定证书的有效期。
3.4 创建设备证书
可以创建无数个设备证书,用户支持每个设备拥有独立的设备证书。
- 创建设备私钥
openssl genrsa -out device.key 2048
- 创建证书申请文件
openssl req -new -key device.key -out device.csr
- 签发设备证书
openssl x509 -req -in device.csr -CA intermediate.crt -CAkey intermediate.key -CAcreateserial -out device.crt -days 3650
使用 -req 参数指定输入的是证书请求,使用 -in 参数指定证书请求文件名,使用 -CA 参数指定签署证书的 CA 证书文件名,使用 -CAkey 参数指定签署证书的 CA 私钥文件名,使用 -CAcreateserial 参数创建序列号文件,使用 -out 参数指定输出文件名,使用 -days 参数指定证书的有效期。
4. 总结
PKI是一套成熟的安全体系,实现安全认证与通信的核心是数字证书,而数字证书的核心是非对称公钥
/私钥
对。公钥可以自由分发,公钥丢失后可以通过私钥提取出公钥,但是无法通过公钥提取私钥,所以私钥必须严格保密存储,私钥的安全保管成为整个PKI体系安全的最核心前提条件。