数字证书及DER编码和证书库
一、数字证书
数字证书是什么?
数字证书是一种用于安全通信的文件,其中包含与证书持有者相关联的信息,如公钥和证书持有人的身份信息。 数字证书通常用于在互联网上建立安全连接,如 HTTPS,SSL 和 TLS。
ASN1在数字证书的应用
ASN.1 (Abstract Syntax Notation One) 是一种用于定义数据结构的抽象语法标记,在数字证书领域,ASN.1被广泛应用于X.509证书和CRL(certificate revocation lists)的编码和解码。
- 数字证书由一组格式化信息组成,比如证书主题(subject)、证书颁发者(issuer)、公钥、证书序列号(serial number)、有效期(validity period)等等。这些信息用ASN.1格式的数据结构描述。
- X.509数字证书主要采用DER编码,也可以采用PEM编码。DER编码是二进制格式的ASN.1编码格式,而PEM编码则是将DER编码的数据放在PEM文件(纯文本)中,类似于Base64编码。其中DER编码相对更为紧凑,PEM编码则更方便传输和存储。
- 在ASN.1中的数据类型有很多种,比如Bit String、Integer、Object Identifier、Sequence等等,在数字证书中常用的数据类型包括:INTEGER、BIT STRING、SEQUENCE、OBJECT IDENTIFIER等。
在这里只给部分简介,具体描述在第六题探究里
数字证书格式
数字证书是由一定格式的数据构成的,主要包括以下基本格式:
- 证书版本号:指明证书的版本号,目前一般采用版本号为3的X.509证书。
- 证书序列号:由颁发者(CA)生成的唯一的序列号,用于区分同一颁发者下不同证书的唯一编号。
- 签名算法标识:指明签名使用的算法,比如SHA1withRSA、SHA256withRSA等。
- 颁发者(CA)信息:包括组织名称、CA名称、联系电话、电子邮件等信息。
- 证书有效期:包括证书的起始时间和结束时间,用以确定证书的有效期限。
- 证书主题信息:与证书标识的使用者有关的信息,比如用户的身份、邮箱、组织或企业信息等。
- 公钥信息:含有公钥,包括算法、主要参数和公钥值等;
- 扩展信息:用于附加证书的信息,比如Subject Alternative Name、Key Usage等扩展属性。
数字证书的格式一般采用X.509标准,并且将证书存储在计算机操作系统中的证书库中,供应用程序使用。常用的数字证书文件格式包括PEM、DER和PFX(PKCS#12)等。其中,PEM格式是最常见的证书格式,它是基于Base64编码的ASCII码文本格式,可以使用普通的文本编辑器进行查看和编辑。DER格式是二进制的ASN.1编码格式,可以使用Hex编辑器进行查看和编辑。PFX格式则是将私钥、公钥和证书文件打包成密钥库,提供给客户端使用。
数字证书的标准扩展内容
数字证书中的标准扩展项可以用于提供额外的信息,例如了解何时以及如何使用证书,包括部分常用扩展项目如下:
- Extended Key Usage:指定证书的用途,如加密、数字签名、Client Authentication等。
- Key Usage:描述证书的密钥用途,如密钥协商、数字签名、加密等。
- Authority Key Identifier:确定签名证书的颁发者(CA)和CA的公钥。
- Subject Key Identifier:确定证书识别的密钥对应的私钥的公钥。
- Certificate Policies:指定使用证书的政策规则,如安全策略、框架等。
- Subject Alternative Name:指定除了主题中指定的名称外,其他有资格用于地址命名的名称,如电子邮件地址、IP地址等。
- Authority Information Access:确定颁发此证书的CA的信息,包括CA的OCSP服务器地址,证书更新地址等。
- CRL Distribution Points:指定证书吊销列表(CRL)的分发路径地址。
这些扩展项在数字证书中起到非常重要的作用,为证书的颁发和验证提供更多的附加信息。在使用数字证书时,建议根据具体需求适当添加扩展项。
数字证书的专用互联网扩展项
数字证书中还有一些专用的扩展项,这些扩展项主要应用于互联网上,用于处理数字证书的颁发和身份验证,从而加强互联网安全
- Authority Information Access (AIA):用于证书颁发机构(CA)公布证书链上所有证书的信息和下载地址。
- OCSP No Check:用于向证书验证人员表明证书的状态应由终端设备决定,而不是在线证书状态协议(OCSP)服务器。
- OCSP Service Locator:为OCSP服务器提供自动发现和选择的机制。
- Certificate Transparency (CT):用于通过日志验证证书,以检测恶意证书的颁发和使用。
- Signed Certificate Timestamp (SCT):指定证书相关日志的时间戳,以验证证书的有效性。
数字证书国内扩展项
在国内,数字证书也有专门的扩展项。一些常见的国内扩展项包括:
- 安全电子印章(SEC):用于实现电子印章的有效性验证和身份证明。
- 电子营业执照(EBL):用于实现电子营业执照的发行和验证。
- 身份证关联证书(IDC):用于关联数字证书和持有人的身份证信息,以验证证书的真实性。
- 个人数字证书(PN):用于个人身份验证和文件加密等场景。
- 机构数字证书(ON):用于机构身份验证,例如企业的组织机构代码证。
这些扩展项主要在我国使用,可以用于加强电子商务、电子政务等方面的安全性。值得注意的是,这些扩展项具有强烈的本地特色,主要在国内的数字证书体系中使用,其他国家和地区的数字证书体系中可能不存在这些扩展项。
数字证书分类
根据证书持有者分类
- 个人数字证书:通常由公共认证机构(CA)颁发,用于个人身份认证和文件签名加密等场景。例如,个人身份证数字证书就是一种非常常见的个人数字证书。
- 机构数字证书:用于机构身份认证,例如公司的组织机构代码证和营业执照等。机构数字证书也可以由CA颁发。
- 代码签名证书:用于代码的签名,以证明代码的来源和无篡改。例如,微软的Authenticode证书就是一种代码签名证书。
- 服务器数字证书:用于验证网站服务器的身份,保护网络通信过程中的数据安全。例如,TLS/SSL协议就需要使用服务器数字证书来确保客户端与服务器之间的通信安全。
- 设备证书:用于设备身份认证和数据安全保护等场景。例如,苹果公司的设备证书用于验证iPhone和其他设备的身份和安全性。
这些数字证书的主要作用都是进行身份验证和加密数据传输,从而保护个人隐私和技术安全。
根据证书密钥分类
- 对称密钥证书:这种证书使用相同的密钥来加密和解密数据,因此也称为共享密钥证书。对称密钥证书通常用于加密小范围数据,例如文件传输时的本地文件加密和解密等。但是,用于对称密钥证书加密的密钥需要安全的传输,因此目前对称密钥证书的使用比较有限。
- 非对称密钥证书:这种证书使用公钥和私钥来加密和解密数据,因此也称为公私钥证书。通过使用非对称密钥证书,数据发送方可以使用接收方的公钥来加密数据,只有接收方可以使用自己的私钥来解密数据。非对称密钥证书广泛用于数字签名、加密通信等场景,通过证书机构的认证可以为公钥证明持有者的身份和信用度。
总的来说,非对称密钥证书是目前主要应用和使用的数字证书,其安全性和广泛性能够满足大部分网络通信过程中的安全需求。
二、DER
证书的DER保存形式
DER是一种二进制编码格式,用于存储数字证书。DER的全称是Distinguished Encoding Rules(可辨别编码规则),它是ASN.1(抽象语法标记)的一种编码方式。DER编码是一种紧凑的格式,可以使得数字证书的存储和传输变得更加高效和方便。
在DER编码方式中,数字证书以二进制格式进行存储,在处理证书时需要使用相关的程序进行解码,例如OpenSSL和Java等开发工具。一般来说,DER编码的数字证书具有以下特点:
- 可移植性:DER编码的数字证书可以在多种平台和应用程序之间进行共享和传输,因此具有较高的可移植性。
- 紧凑性:纯二进制方式编码,DER格式的数字证书非常紧凑,因此可以在有限的存储空间中存储相同数量的证书。
- 高效性:DER编码方式可以实现快速的数据解析和处理,上层应用程序可以快速、高效地读取和编写数字证书的信息。
在实际应用中,DER数字证书广泛应用于公开密钥基础设施(PKI)系统和各种网络安全应用中,通过数字证书的交换和校验来保证网络通信的安全性和可信性。
三、证书库
证书库是用于存储数字证书和相关信息的数据库,通常由应用程序或操作系统提供。证书库可以包含私钥、公钥、数字证书以及其他SSL/TLS证书和证书链,可以是一种本地存储方式或集中管理的方式,是数字证书基础设施中非常重要的一部分。
在数字证书的管理中,证书库通常用于以下方面:
- 存储数字证书和相关信息:证书库可以存储发行机构颁发的数字证书以及各种应用程序生成的证书,包括证书内容、证书链和其他证书相关信息。
- 验证数字证书:证书库可以通过对数字证书的快速查询和验证,确定其是否为可信数字证书,从而确保通信过程中的安全性。
- 提供SSL/TLS服务:一些应用程序可以使用证书库中的数字证书提供SSL/TLS服务,以确保通信数据的机密性和完整性。
在实际应用中,证书库被用于多个网络安全应用程序,包括Web浏览器、电子邮件客户端、服务器等等。同时,证书库的管理也是数字证书基础设施实施中的关键问题之一,需要进行定期备份和更新,以确保证书信息的完整性和安全性。