CA

CA 概述

  • CA,Catificate Authority,证书授权中心
  • 它的作用就是提供证书,以及证书运维相关服务。
  • 任何个体/组织都可以扮演 CA 的角色,只不过难以得到客户端的信任
  • 扮演 CA 角色,就意味着要管理大量的 pair 对,而原始的一对 pair 对叫做 root pair,它包含了 root key 和 root certificate

CA 分类

公共 CA:

  • 公共的CA机构,分发面向企业或个人的证书,证书受浏览器信任,不会有不安全的弹窗警告
  • 能够受浏览器默认信任的 CA 大厂商有很多,其中 TOP5 是 Symantec、Comodo、Godaddy、GolbalSign 和 Digicert。

私有 CA:

  • 自建的CA机构,通常用于企业内部证书分发,证书不受浏览器信任,会有不安全的弹窗警告

CA 结构

  • 下面描述的又称证书信任链

  • 通常 root CA 不会直接为服务器或者客户端签证,它们会先为自己生成几个中间 CA(intermediate CAs),这几个中间 CA 作为 root CA 的代表为服务器和客户端签证。

  • Root CA(根CA 相当于国务院)–> intermediate CAs(中间CA 相当于省公安厅)–> last CAs(最后CA 相当于地方公安局)

  • 如果根CA不受信了,那么其它的子CA都将不可信

证书概述

  • certificate

  • 所谓证书其实就是将公钥加上数字签名

  • 证书的作用是加强服务端和客户端之间信息交互的安全性,当通过 HTTPS 访问页面时,浏览器会主动验证证书信息是否匹配,也会验证证书是否有效。

证书标准规范X.509

  • 证书是由认证机构颁发的,使用者需要对证书进行验证,因此如果证书的格式千奇百怪那就不方便了。于是,人们制定了证书的标准规范,其中使用最广泛的是由ITU(International TelecommumcationUnion,国际电信联盟)和ISO(IntemationalOrganizationforStandardization, 国际标准化组织)制定的X.509规范

  • X.509是一种非常通用的证书格式。所有的证书都符合ITU-T X.509国际标准

  • 对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。X.509标准定义了证书中应该包含哪些信息,并描述了这些信息是如何编码的(即数据格式)

证书组成要素

  • 版本号(Version Number)
    • 规范的版本号,目前为版本3,值为0x2
  • 序列号(Serial Number)
    • 由CA维护的为它所发的每个证书分配的一的列号,用来追踪和撤销证书。只要拥有签发者信息和序列号,就可以唯一标识一个证书,最大不能过20个字节;
  • 签名算法(Signature Algorithm)
    • 数字签名所采用的算法,如:
      • sha256-with-RSA-Encryption
      • ccdsa-with-SHA2S6
  • 颁发者(Issuer)
    • 颁发证书单位的标识信息,如:
      • C=CN,ST=Beijing, L=Beijing, O=org.example.com,CN=ca.org。example.com
  • 有效期(Validity)
    • 证书的有效期很,包括起止时间。
  • 主体(Subject)
    • 证书拥有者的标识信息(Distinguished Name),如:
    • C=CN,ST=LiaoNing, L=HuLuDao, CN=xiangzheng.vip
  • 主体的公钥信息(SubJect Public Key Info)
    • 所保护的公钥相关的信息:
      • 公钥算法 (Public Key Algorithm)公钥采用的算法
      • 主体公钥(Subject Unique Identifier)公钥的内容
  • Other(可选)
    • 颁发者唯一号(Issuer Unique Identifier):代表颁发者的唯一信息,仅2、3版本支持,可选;
    • 主体唯一号(Subject Unique Identifier):代表拥有证书实体的唯一信息,仅2,3版本支持,可选:
    • 扩展(Extensions): 可选的一些扩展,可选;中可能包括:
      • Subject Key Identifier:实体的秘钥标识符,区分实体的多对秘钥;
      • Basic Constraints:一指明是否属于CA;
      • Authority Key Identifier:证书颁发者的公钥标识符;
      • CRL Distribution Points: 撤销文件的颁发地址;
      • Key Usage:证书的用途或功能信息。

证书吊销

  • 当用户的私钥丢失、被盗时,认证机构需要对证书进行作废(revoke)。此外,即便私钥安然无恙,有时候也需要作废证书,例如用户从公司离职导致其失去私钥的使用权限,或者是名称变更导致和证书中记载的内容不一致等情况。

  • 纸质证书只要撕毁就可以作废了,但这里的证书是数字信息,即便从仓库中删除也无法作废,因为用户会保存证书的副本,但认证机构又不能人侵用户的电脑将副本删除。

  • 要作废证书,认证机构需要制作一张证书==作废清单(Certificate Revocation List),简称为CRL==。

  • CRL是认证机构宣布作废的证书一览表,具体来说,是一张已作废的证书序列号的清单,并由认证机构加上数字签名。证书序列号是认证机构在颁发证书时所赋予的编号,在证书中都会记载。

  • PKI用户需要从认证机构获取最新的CRL,并查询自己要用于验证签名(或者是用于加密)的公钥证书是否已经作废这个步骤是非常重要的。

  • **假设我们手上有Bob的证书,该证书有合法的认证机构签名,而且也在有效期内,但仅凭这些还不能说明该证书一定是有效的,还需要查询认证机构最新的CRL,并确认该证书是否有效。**一般来说,这个检查不是由用户自身来完成的,而是应该由处理该证书的软件来完成,但有很多软件并没有及时更能CRL。

PKI 概述

  • 公钥基础设施(Public-Key infrastructure)是为了能够更有效地运用公钥而制定的一系列规范和规格的总称。公钥基础设施一般根据其英语缩写而简称为PKI。
  • PKI只是一个总称,而并非指某一个单独的规范或规格。
    • 例如:PKCS、RFC、X.509这样的规范也是PKI的一种

PKI 组成要素

  • 用户
    • 使用PKI的人
  • 认证机构
    • 颁发证书的人
  • 仓库
    • 保存证书的数据库

相关管理工具

  • openssl
  • easyrsa
  • cfssl

证书申请及签署步骤简述

  1. 创建私有CA

  2. 申请证书

  3. RA核验

    • RA(Registration Authority),数字证书注册审批机构。RA系统是CA的证书发放、管理的延伸。它负责证书申请者的信息录入、审核以及证书发放等工作;同时,对发放的证书完成相应的管理功能。发放的数字证书可以存放于IC卡、硬盘或软盘等介质中。RA系统是整个CA中心得以正常运营不可缺少的一部分。
  4. CA签署

    • CA中心,又称为数字证书认证中心,作为电子商务交易中受信任的第三方,专门解决公钥体系中公钥的合法性问题。CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户名称与证书中列出的公开密钥相对应。CA中心的数字签名使得攻击者不能伪造和篡改数字证书。
  5. 获取证书

证书加密通信流程

下面以 Bob 和 Alice 这两个角色举例

Bob 生成证书阶段:

  1. Bob 生成公钥私钥对,并将私钥进行妥善保管(要使用公钥密码进行通信,首先需要生成密钥对)
    • 生成密钥对有两种方式:一种是由PKI用户自行生成,一种是由认证机构来生成。在认证机构生成用户密钥对的情况下,认证机构需要将私钥发送给用户,这时就需要使用PKCS#12(Personal Information Exchange Syntax Standard)等规范。
  2. Bob 向 CA 发送自己的公钥
  3. CA 审核所收到的公钥是否为 Bob 本人所有
    • 如果认证机构提供的是测试用的服务,那么可能完全不会进行任何身份确认。
    • 如果是政府部门运营的认证机构,可能就需要根据法律规定来进行身份确认。
    • 如果是企业面向内部设立的认证机构,那就可能会给部门负责人打电话直接确认。
  4. 审核通过后,CA 用自己的私钥对 Bob 的公钥进行数字签名 进而生成 Bob 的证书

Alice 验证阶段:

  1. Alice 获到 Bob 的证书(证书中包含 Bob 的公钥) CA 的公钥
  2. Alice 利用 CA 的公钥将 Bob 的证书解密,如果能解密 则确认该证书合法,进而得到 CA 的公钥。(因为被 CA 私钥加密的证书只能由CA的公钥所解密 进而就可以确认 Bob 的证书确实是由该 CA 所签发)
    • 这步仅在 Alice 第一次用公钥密码向 Bob 发送消息时才需要进行,只要 Alice 将 Bob 的公钥保存在电脑中,在以后的通信中就可以直接使用了。
  3. Alice 将数据使用 Bob 的公钥进行加密 然后发送给 Bob

Bob 解密阶段:

  1. Bob 收到 Alice 的数据后,使用自己的私钥进行解密 进而得到数据实体。(因为数据使用的是 Bob 的公钥加密的,所以只能用 Bob 的私钥来解密)

CA 相关文件后缀参考说明

  • .key
    • 证书私钥文件
  • .crt
    • Certs
    • 证书文件(Linux默认的后缀)
  • .cer
    • Certs
    • 证书文件(Windows默认的后缀)
  • ca
    • 证书机构
  • .req
    • Request
    • 证书签名申请文件(easy-rsa默认)
  • .csr
    • Certs Signing Request
    • 证书签名申请文件(Open SSL默认)
  • .crl
    • Certs Revocation List
    • 证书吊销列表文件(Windows默认的后缀)
  • .pem
    • Privacy Enhanced Mail
    • 证书吊销列表文件
    • CA私钥文件
    • 证书请求文件

泛域名证书

泛域名证书(Wildcard SSL Certificate)是一种用于加密网站通信的数字证书,它允许您保护一个域名及其所有子域名的安全性,而无需为每个子域名单独购买和安装SSL证书。泛域名证书的主要特点是它可以适用于一个主域名的多个子域名,这些子域名可以具有不同的名称,但都属于同一主域。

例如,如果您拥有一个主域名example.com,并且有多个子域名如www.example.com、blog.example.com、shop.example.com等,您可以使用泛域名证书来为所有这些子域名提供加密保护,而不需要为每个子域名单独购买证书。

泛域名证书通常以星号(*)作为通配符,放置在主域名前面,例如*.example.com。这意味着证书将覆盖example.com的所有子域名,无论是现有的还是将来新增的。这对于拥有大量子域名的网站或需要频繁添加新子域名的情况非常有用,因为它简化了SSL证书管理的复杂性和成本。

要使用泛域名证书,您需要生成证书签发请求(CSR)并将其提交给SSL证书颁发机构(CA)。一旦证书颁发机构签发了泛域名证书,您可以将其安装在您的Web服务器上,以确保所有相关子域名的安全通信都经过SSL加密。这有助于提高网站的安全性,并为访问者提供更高的信任感。

使用 openssl 自建泛域名证书

使用OpenSSL自建泛域名证书(Wildcard SSL Certificate)需要执行以下步骤:

  1. 安装OpenSSL: 如果您尚未安装OpenSSL,请先在您的计算机上安装它。您可以从OpenSSL的官方网站(https://www.openssl.org/)下载适合您操作系统的版本并进行安装。

  2. 生成私钥(Key)文件: 使用以下命令生成私钥文件(例如,example.com.key):

    openssl genpkey -algorithm RSA -out example.com.key

    在生成私钥时,您需要设置密码以保护私钥文件。请确保妥善保管私钥文件,因为它对于证书的安全性至关重要。

  3. 生成证书签发请求(CSR): 使用以下命令生成CSR文件(例如,example.com.csr)。在这个过程中,您将需要指定通配符域名,以及其他相关信息。

    openssl req -new -key example.com.key -out example.com.csr

    在生成CSR时,确保在Common Name字段中使用通配符,例如:*.example.com

  4. 提交CSR文件到证书颁发机构(CA): 将生成的CSR文件提交给您选择的证书颁发机构,以获取泛域名SSL证书。不同的CA可能有不同的流程和要求,通常您需要提供您的CSR文件和一些身份验证信息。

  5. 颁发泛域名SSL证书: CA将审查您的CSR并颁发泛域名SSL证书。一旦您收到证书文件(通常是以.crt扩展名结尾的文件),请将它保存在与私钥文件相同的目录中。

  6. 配置Web服务器: 最后,将私钥文件和泛域名SSL证书文件配置到您的Web服务器上。具体配置方法取决于您使用的服务器软件(例如,Apache、Nginx、IIS等)。通常,您需要在服务器配置文件中指定证书文件的路径和私钥文件的路径。

  7. 测试和验证: 重新启动您的Web服务器,并确保您的泛域名SSL证书已成功安装。您可以使用在线SSL检查工具来验证您的证书是否配置正确,并确保通配符证书可用于所有子域名。

请注意,泛域名SSL证书通常需要购买,而且通常比普通SSL证书更昂贵。此外,一些证书颁发机构可能有不同的要求和流程,因此在创建证书之前,建议查看您选择的CA的文档和指南以确保正确操作。此外,泛域名证书的使用通常受限于您的域名配置和使用情况,因此确保了解证书的使用范围。