HTTPS(四)相关术语小结

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规范,认证请求由三个主要部分组成:认证请求信息,签名算法标识符和认证请求信息上的数字签名:

  1. 应颁发证书的公钥
  2. 标识信息(专有名称(DN),例如域名、公司组织、),以X.509证书中的样本为例:
    • C: 国家/地区:您的组织合法注册的官方双字母国家/地区代码(即US,CH)
    • ST:州或省:贵组织合法注册的州或省。不要缩写。
    • L: 城市或地区:贵组织合法注册的地区或城市。不要缩写。
    • O: 组织:组织的完整法定名称,包括公司标识符。
    • OU:组织单位(OU):您的部门,如“信息技术”或“网站安全”。
    • CN:通用名称:您希望使用证书保护的FQDN(完全限定的域名),例如www.google.com,secure.website.org,* .domain.net等。
  3. 完整性保护(例如,数字签名)

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中的配置的扩展部分有见到:

[req]
req_extensions      = server_extensions
...

[ server_extensions ]
subjectAltName         = @alternate_names
...

[ alternate_names ]
DNS.1  = tkstorm.cc
DNS.2  = www.tkstorm.cc
DNS.3  = mail.tkstorm.cc

1.7. SAN证书

一个主题备用名称(或SAN)证书是数字安全证书,它允许多个主机名由一个证书来保护。

SAN证书也可称为统一通信证书、UCC证书、多域证书、Exchange证书。SAN证书可以做到:

  1. 解决在单个服务器上托管多个启用SSL的站点的问题。(通常SSL开启需要每个站点具有唯一的IP地址,但具有主题备用名称的多域(SAN)证书可以解决此问题。)
  2. 解决多域名证书不同,需要重复部署的问题,SAN证书简化了服务器配置。(比如nginx支持多域(SAN)证书部署,,,避免一个域名一个证书或者一个ip一个证书的部署;)

问题:在原有ssl证书上面,新增域名时候,需要重新签发证书

1.8. 通配符证书 - Wildcard certificate

在计算机网络中,通配符证书是一个可以被多个子域使用的公钥证书,但不能匹配到所有子域名;

  1. 颁发给 *.example.com, 的证书可以用于下列域名:
  2. 由于通配符证书只能覆盖一级子域(*不匹配所有子域),该证书无法有效服务于下面的域:
    • test.login.example.com
  3. 当裸域名被列入可选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'后缀(用于公钥或私钥)的文件中。

-----BEGIN CERTIFICATE-----
MIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
A1UEChMGR251VExTMSUwIwYDVQQLExxHbnVUTFMgY2VydGlmaWNhdGUgYXV0aG9y
aXR5MQ8wDQYDVQQIEwZMZXV2ZW4xJTAjBgNVBAMTHEdudVRMUyBjZXJ0aWZpY2F0
ZSBhdXRob3JpdHkwHhcNMTEwNTIzMjAzODIxWhcNMTIxMjIyMDc0MTUxWjB9MQsw
CQYDVQQGEwJCRTEPMA0GA1UEChMGR251VExTMSUwIwYDVQQLExxHbnVUTFMgY2Vy
dGlmaWNhdGUgYXV0aG9yaXR5MQ8wDQYDVQQIEwZMZXV2ZW4xJTAjBgNVBAMTHEdu
dVRMUyBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkwWTATBgcqhkjOPQIBBggqhkjOPQMB
BwNCAARS2I0jiuNn14Y2sSALCX3IybqiIJUvxUpj+oNfzngvj/Niyv2394BWnW4X
uQ4RTEiywK87WRcWMGgJB5kX/t2no0MwQTAPBgNVHRMBAf8EBTADAQH/MA8GA1Ud
DwEB/wQFAwMHBgAwHQYDVR0OBBYEFPC0gf6YEr+1KLlkQAPLzB9mTigDMAoGCCqG
SM49BAMCA0gAMEUCIDGuwD1KPyG+hRf88MeyMQcqOFZD0TbVleF+UsAGQ4enAiEA
l4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
-----END CERTIFICATE-----

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扩展名用于证书。证书可以编码为二进制DERASCII 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. 参考