1. 字段概述
1.1. X.509 - 定义公钥证书格式的标准
在加密技术中,X.509 是定义公钥证书格式的标准。
X.509 证书用于许多 Internet 协议,包括TLS/SSL
,它是 HTTPS(用于浏览 Web 的安全协议)的基础。
X.509 证书包含公钥和标识(主机名,组织或个人),并由证书颁发机构 CA签名或自签名。
持有 X.509 证书的人可以依赖其包含的公钥来与另一方建立安全通信,或者验证由相应私钥进行数字签名的文档。
1.2. CA - 证书颁发机构
在加密中,证书颁发机构(CA)是颁发数字证书的实体。
CA 充当受信任的第三方 -由证书的主体(所有者)和依赖证书的一方(证书用户)进行信任。这些证书的格式由 X.509 标准指定。
证书颁发机构的一个特别常见的用途是签署 HTTPS 中使用的证书,这是万维网的安全浏览协议。另一个常见用途是由各国政府签发身份证,用于电子签署文件。
商业 CA 赛门铁克(或赛门铁克公司购买之前的 VeriSign)一直保持着最高点,除商业 CA 外,一些非营利组织向公众免费发放数字证书(值得注意的例子是 CAcert 和 Let 的加密)
1.3. X509 证书版本
常见的 X509 版本为 V3 版本,默认通过 openssl 签名生成的版本为 v1 版本
/etc/ssl/x509v3.cnf /etc/ssl/openssl.cnf
1.4. CSR - 证书签名请求
在公钥基础结构(PKI)系统中,证书签名请求(Certificate signing request),也称为 CSR 或证书请求,是从申请人发送到证书颁发机构以便申请数字身份证书的消息。
CSR 信息组成:
CSR 的最常见格式是PKCS#10
规范,认证请求由三个主要部分组成:认证请求信息,签名算法标识符和认证请求信息上的数字签名:
- 应颁发证书的公钥
- 标识信息(专有名称(DN),例如域名、公司组织、),以 X.509 证书中的样本为例:
- C: 国家/地区:您的组织合法注册的官方双字母国家/地区代码(即 US,CH)
- ST:州或省:贵组织合法注册的州或省。不要缩写。
- L: 城市或地区:贵组织合法注册的地区或城市。不要缩写。
- O: 组织:组织的完整法定名称,包括公司标识符。
- OU:组织单位(OU):您的部门,如“信息技术”或“网站安全”。
- CN:通用名称:您希望使用证书保护的 FQDN(完全限定的域名),例如www.google.com,secure.website.org,* .domain.net 等。
- 完整性保护(例如,数字签名)
CSR 生成:在创建 CSR 之前,申请人首先生成密钥对,保密私钥,虽然需要私钥来生成 CSR,但它不是 CSR 的一部分。
1.5. CRL - 证书撤销列表
在加密技术中,证书撤销列表(或 CRL)是“发布证书颁发机构(CA)在其计划的到期日期之前已被撤销且不再受信任的数字证书列表”
X.509 还定义了证书撤销列表 CRL,它是一种分发有关签名机构认为无效的证书的信息的方法,以及一种证书路径验证算法,该算法允许证书由中间 CA 证书签名,反过来,由其他证书签署,最终到达信任锚。
1.6. SAN - Subject Alternative Name
主题备用名称(SAN)是 X.509 的扩展,它允许使用字段将各种值与安全证书相关联。
这些值称为 Subject Alternative Names (SANs),名称包括:
- Email 地址
- IP 地址
- URI
- DNS 名称(通常也作为主证书的“主题”字段中的公用名 RDN 提供。)
- 目录名称(主题中给出的替代专有名称)
- 其他名称,以通用名称给出:已注册的[3]对象标识符,后跟值
在openssl.cnf
中的配置的扩展部分有见到:
|
|
1.7. SAN 证书
一个主题备用名称(或 SAN)证书是数字安全证书,它允许多个主机名由一个证书来保护。
SAN 证书也可称为统一通信证书、UCC 证书、多域证书、Exchange 证书。SAN 证书可以做到:
- 解决在单个服务器上托管多个启用 SSL 的站点的问题。(通常 SSL 开启需要每个站点具有唯一的 IP 地址,但具有主题备用名称的多域(SAN)证书可以解决此问题。)
- 解决多域名证书不同,需要重复部署的问题,SAN 证书简化了服务器配置。(比如 nginx 支持多域(SAN)证书部署,,,避免一个域名一个证书或者一个 ip 一个证书的部署;)
问题:在原有 ssl 证书上面,新增域名时候,需要重新签发证书
1.8. 通配符证书 - Wildcard certificate
在计算机网络中,通配符证书是一个可以被多个子域使用的公钥证书,但不能匹配到所有子域名;
- 颁发给 *.example.com, 的证书可以用于下列域名:
- payment.example.com
- login.example.com
- www.example.com
- 由于通配符证书只能覆盖一级子域(*不匹配所有子域),该证书无法有效服务于下面的域:
- test.login.example.com
- 当裸域名被列入可选 DNS 名称,该证书也可被用于裸域名(又称根域),但不同 CA 签发可能有些许差别
- example.com
1.9. EV 证书 - Extended Validation Certificate
通配符 SSL 证书或 SAN 证书是使用单个证书保护整个域的便捷方式。但是,某些应用程序需要仅通过扩展验证(EV)SSL 证书提供的增强信任。
通配符域不能使用扩展验证,包含在 EV 证书的每个项目都必须单独审查。
使用 EV 证书,您可以提高购物车费率,增强用户信任度,并在您使用通配符保护域名的其余部分时获得网站最重要区域的“绿色栏”(组织部分会在导航栏有体现)。
1.10. OCSP - 在线证书状态协议
使用 CRL 的替代方法是称为在线证书状态协议(OCSP)的证书验证协议。OCSP 的主要优点是需要较少的网络带宽,可实现大批量或高价值操作的实时和近实时状态检查。
1.11. Let’s Encrypt - 非盈利的 CA 组织
Let’s Encrypt 是一个非盈利性 认证机构通过运行互联网安全研究小组(ISRG)提供 X.509 证书的传输层安全性不收取任何费用(TLS)加密。证书有效期为 90 天,在此期间可以随时续订。
该优惠伴随着一个自动化流程,旨在克服安全网站的手动创建,验证,签名,安装和续订证书
1.12. ACME 协议 - 自动证书管理环境
用于自动注册证书颁发机构的质询 - 响应协议称为自动证书管理环境(ACME)。
它涉及对证书涵盖的域上的 Web 服务器的各种请求,基于所得到的响应是否与期望相匹配,确保了对域的登记者的控制(域验证)。
为此,ACME 客户端软件在服务器系统上设置一个特殊的 TLS 服务器,ACME 证书颁发机构服务器使用服务器名称指示(使用服务器名称指示进行域验证,DVSNI)查询特殊请求。
1.13. acme.sh - 基于 SH 编写的 ACME 协议开源客户端
- 一个纯粹用 Shell(Unix shell)语言编写的 ACME 协议客户端。
- 完整的 ACME 协议实施。
- 支持 ACME v1 和 ACME v2
- 支持 ACME v2 通配符证书
- 简单,功能强大且易于使用。你只需要 3 分钟就可以学习它。
- Bash,dash 和 sh 兼容。
- Let’s Encrypt 免费证书客户端最简单的 shell 脚本。
- 纯粹用 Shell 编写,不依赖于 python 或官方的 Let’s Encrypt 客户端。
- 只需一个脚本即可自动颁发,续订和安装证书。
- 不需要 root/sudoer 访问权限。
- Docker 友好
- IPv6 支持
https://github.com/Neilpang/acme.sh
1.14. MITM - 中间人攻击
中间人攻击(Meet-in-the-middle attack)是一种攻击,攻击者秘密中继并可能改变双方之间的通信,这些双方认为他们之间正在直接通信。
MITM 攻击的一个例子是主动窃听,攻击者与受害者建立独立联系并在他们之间转发消息,使他们相信他们通过私人连接直接相互通话,而实际上整个会话都是由攻击者控制的。
攻击者必须能够拦截在两个受害者之间传递的所有相关消息并注入新的消息。
1.15. PEM - Privacy-Enhanced Mail
隐私增强邮件(Privacy-Enhanced Mail)是一种事实上的文件格式,用于存储和发送加密密钥,证书和其他数据。
PEM 格式通过使用base64编码
二进制数据来解决二进制文件问题(比如在 Email 中传输结果)。
PEM 还定义了一个单行标题,包括'----- BEGIN 标签 -----'
,以及'----- END 标签 -----'
组成;
标签确定编码的消息类型,常用标签包括“证书”,“证书请求”,“私钥”和“X509 CRL”
文件扩展名,PEM 数据通常存储在带有’.pem’后缀,’.cer’或’.crt’后缀(用于证书)或’.key’后缀(用于公钥或私钥)的文件中。
|
|
1.16. X.509 证书文件扩展名
X.509 证书有几种常用的文件扩展名。不幸的是,其中一些扩展也用于其他数据,如私钥。
- .pem - (隐私增强型电子邮件)Base64 编码的 DER 证书,包含在
“----- BEGIN CERTIFICATE -----”
和“----- END CERTIFICATE -----”
之间 - .cer,.crt,.der - 通常采用二进制 DER 形式,但 Base64 编码的证书也很常见(参见上面的.pem)
- .p7b,.p7c -
PKCS#7
SignedData 结构没有数据,只有证书或 CRL(s) - .p12 -
PKCS#12
,可能包含证书(公共)和私钥(密码保护) - .pfx -
PFX,PKCS#12的前身
(通常包含 PKCS#12 格式的数据,例如,在 IIS 中生成的 PFX 文件)
1.17. DER 与 PEM、CRT、CER 与 KEY 扩展名
有关 DER,PEM,CRT 和 CER 的内容存在很多困惑,许多人错误地说它们都是可以互换的。虽然在某些情况下可以互换一些,但最佳做法是确定证书的编码方式,然后正确标记。
1.17.1. 编码格式(也用作扩展)
- .DER = DER 扩展用于二进制 DER 编码证书。这些文件也可能带有 CER 或 CRT 扩展名。正确的说法是“我有 DER 编码证书”而不是“我有 DER 证书”。
- .PEM = PEM 扩展名用于不同类型的 X.509v3 文件,这些文件包含前缀为“-BEGIN …”行的 ASCII(Base64)转载数据。
1.17.2. 常见扩展
- .CRT = CRT 扩展名用于证书。证书可以编码为
二进制DER
或ASCII PEM
。CER 和 CRT 扩展几乎是同义词。*nix 系统中最常见的; - .CER = .crt 的替代形式(Microsoft 约定)您可以使用 MS 将.crt 转换为.cer(.both DER 编码.cer 或 base64 [PEM]编码.cer).cer 文件扩展名也被 IE 识别为运行 MS - cryptoAPI 命令(特别是 rundll32.exe cryptext.dll,CryptExtOpenCER)的命令,该命令显示用于导入和/或查看证书内容的对话框。
- .KEY = KEY 扩展用于公共和私有 PKCS#8 密钥。密钥可以编码为二进制 DER 或 ASCII PEM。
CRT 和 CER 可以安全地互换是当编码类型可以相同时候(即 PEM 编码 CRT = PEM 编码 CER)
1.18. PKCS - 一组公钥加密标准(PKCS#1~PKCS#15)
在密码学中,PKCS(Public Key Cryptography Standards)代表“公钥加密标准”。
这些是由 RSA Security LLC 从 20 世纪 90 年代初开始设计和发布的一组公钥加密标准。
1.19. X.509 的 PKI 标准
- PKCS7(加密消息语法标准 - 具有 PKI 签名和/或加密消息的身份证明的公钥)。
- 传输层安全性(TLS)及其前身 SSL - 用于 Internet 安全通信的加密协议。
- 在线证书状态协议(OCSP)[39] /证书撤销列表(CRL)- 证书撤销状态。
- PKCS12(个人信息交换语法标准) - 用于存储具有适当公钥证书的私钥。
1.20. PKIX - 公钥基础设施(X.509)工作组
公钥基础设施(X.509)工作组,由互联网工程任务组(IETF)与国家标准与技术研究所(NIST)共同产生,产生了有关在实践中部署 X.509 的 RFC 和其他标准文档。
特别是它产生了RFC 3280
及其后继RFC 5280
,它定义了如何在 Internet 协议中使用 X.509。
2. OpenSSL
OpenSSL 是一种功能强大的商用级全功能工具包,适用于传输层安全性(TLS)和安全套接字层(SSL)协议,它同时也是一个通用的加密库。
相关配置文件:
/etc/ssl/openssl.cnf Default configuration file for openssl. /etc/ssl/x509v3.cnf Default configuration file for x509 certificates.
相关命令细节参考:openssl-usages
3. ISOC - 互联网协会
互联网协会(ISOC)是美国非营利性组织,成立于 1992 年,在提供领先的互联网相关标准,教育,访问和策略。
3.1. 使命
“促进互联网的开放发展,发展和使用,造福全世界所有人”
以下声明说明了互联网协会政策立场的基础:
我们设想一个未来,世界各地的人们可以利用互联网提高他们的生活质量,因为标准,技术,商业实践和政府政策维持一个开放和普遍可及的创新,创造和经济机会平台。
3.2. 协会组织与会议
在标准类别下,互联网协会支持和促进其作为组织家庭的标准制定机构的工作,我们看到的大多数互联网标准都来源于此:
- 互联网工程任务组(IETF)
- 互联网架构委员会(IAB)
- 互联网工程指导小组(IESG)
- 互联网研究工作组(IRTF)
互联网协会在互联网治理讨论中发挥着突出作用,包括参与:
- 信息社会世界峰会(WSIS)
- 互联网治理论坛(IGF)
4. 结尾
从小到大的概述了涉及 HTTPS 以及 X509 标准的相关概念,梳理了对 HTTPS 证书以及相关概念的了解;
涉及到的相关协会和组织,其实在大型公司内部也可以值得借鉴,尤其是标准方面的缺失情况;
5. 参考
- X.509: https://en.wikipedia.org/wiki/X.509
- CRL: https://en.wikipedia.org/wiki/Certificate_revocation_list
- CSR: https://en.wikipedia.org/wiki/Certificate_signing_request
- MITM: https://en.wikipedia.org/wiki/Man-in-the-middle_attack
- CA: https://en.wikipedia.org/wiki/Certificate_authority
- PKCS: https://en.wikipedia.org/wiki/PKCS
- SAN: https://en.wikipedia.org/wiki/Subject_Alternative_Name