Let'sEncrypt、商业和私人证书颁发机构以及自签名SSL证书的比较

来自菜鸟教程
跳转至:导航、​搜索

介绍

推动越来越多的 Web 流量通过 SSL 加密得到保护,这意味着越来越多的服务和用例需要一个解决方案来获取正确的证书。 无论是公共网站、Intranet 流量还是 Web 应用程序的暂存服务器,您都需要证书来保护您的数据并满足用户的现代安全期望。

SSL 连接的主要好处围绕着 隐私数据完整性 。 连接是私有的,因为加密可以防止窃听。 通过加密验证您是否连接到正确的服务器(而不是冒名顶替者)以及通过验证单个消息在传输过程中没有被篡改来确保数据完整性。

有几种不同的方式可以获得 SSL 证书,根据您的预算、受众和其他一些因素,您可以在商业证书颁发机构、新的自动化和免费证书颁发机构、自签名证书和您的自己的私有证书颁发机构。 让我们对这些选项进行比较,并讨论何时最好使用它们。

词汇表

在开始之前,我们将定义一些在讨论 SSL 安全性时使用的常用术语:

传输层安全 (TLS)

传输层安全性是一种替代安全套接字层 (SSL) 的新安全协议。 尽管现代加密连接更有可能使用 TLS,但 SSL 名称在流行语言中一直存在,我们将在此处使用。

证书

在本文中,我们将专门提到 SSL 服务器证书 。 每当请求新的 SSL 连接时,Web 服务器都会提供服务器证书。 它们包含颁发证书的主机的名称(应与您尝试连接的服务器匹配),并由证书颁发机构签署以建立信任。

证书颁发机构 (CA)

证书颁发机构验证有关域所有者对 SSL 证书的请求的详细信息,然后 - 如果一切顺利 - 颁发并签署服务器证书。 浏览器和操作系统维护一个受信任的证书颁发机构列表。 如果服务器证书由这些受信任的 CA 之一签名,它也将是受信任的。

域验证 (DV)

域验证证书将颁发给已证明他们控制为证书请求的域名的人。 该证明通常采用从您的 Web 服务器或 DNS 记录中提供唯一令牌的形式,CA 将在颁发证书之前对其进行检查。

组织验证 (OV)

组织验证的证书意味着证书颁发机构还在公共数据库中验证了公司名称和地址。 此信息被放入证书中,并且通常仅在用户单击绿色挂锁图标以进一步调查时显示。

扩展验证 (EV)

扩展验证比域或组织验证更彻底。 EV 证书不仅在检查域所有权之后颁发,而且还验证了请求证书的法人实体的存在和位置,并且该实体控制着被验证的域。

与 DV 和 OV 证书不同,EV 不能作为通配符证书颁发。

EV 证书在 Web 浏览器中也得到特殊处理。 浏览器通常用绿色挂锁图标表示 DV 证书,而 EV 证书还显示一个较大的绿色条,其中包含颁发它的组织的名称。 这是为了减少网络钓鱼攻击,尽管一些研究表明用户往往不会注意到这个绿条何时丢失。

通配符证书

通配符证书不是针对特定的完全限定域名(例如 app.example.com)颁发的,而是对整个子域名范围有效。 因此,颁发给 *.example.com 的证书将涵盖 example.com 的任何子域,例如 app.example.comdatabase.example .com。 星号字符是 通配符 ,可以替换为任何有效的主机名。

证书吊销列表 (CRL)

SSL 证书可以包含有关如何访问证书吊销列表的信息。 客户将下载并检查此列表以确保证书未被吊销。 CRL 已在很大程度上被 OCSP 响应者所取代。

在线证书状态协议 (OCSP)

OCSP 协议是 CRL 的替代品,具有更实时和需要更少带宽的优点。 一般操作类似:客户端查询 OCSP 响应者以检查证书是否已被吊销。

商业证书颁发机构

商业证书颁发机构允许您购买 DV、OV 和 EV 证书。 有些提供具有某些限制的免费域验证证书(例如,没有通配符)。

  • 流程:初始设置和更新的手动流程
  • 成本: 大约 $10–$1000
  • 验证: DV、OV 和 EV
  • 信任: 在大多数浏览器和操作系统中默认信任
  • 通配符证书:
  • IP-only Certificates: 有些会为 public IP 地址颁发证书
  • 有效期: 1-3年

大多数商业证书颁发机构在大多数浏览器中默认受信任。 续订过程通常是手动的,因此您必须记下证书的到期日期并提醒自己按时续订。

传统上,商业 CA 是获得大多数主要浏览器信任的证书的唯一真正选择。 随着新的自动化证书颁发机构(如 Let's Encrypt)的出现,这种情况发生了变化。 尽管如此,商业 CA 是获得 EV 证书的唯一途径,也是获得大多数浏览器自动信任的通配符证书的唯一途径。 如果您需要一个无法运行自动化 Let's Encrypt 客户端的设备的证书(由于软件不兼容,或者可能是低功耗嵌入式设备),它们也是一个不错的选择。

商业证书颁发机构通常提供额外支持合同、保证和认证的选项,这对某些公司和行业很重要。

让我们加密

Let's Encrypt 提供了一种自动机制来请求和更新免费的域验证证书。 他们创建了一个标准协议——ACME——用于与服务交互以自动检索和更新证书。 官方 ACME 客户端称为 Certbot,尽管存在许多替代客户端。

  • Process: 初始设置和更新是自动化的。 只有 Apache 和 Nginx 设置是使用官方客户端自动完成的,但可以独立于任何特定的服务器软件下载和使用证书。
  • 费用:免费
  • 验证: 仅限DV
  • 默认值: 在大多数浏览器和操作系统中默认受信任
  • 通配符证书:否(计划2018年1月
  • IP-only 证书:
  • 有效期: 90天

Let's Encrypt 证书是短暂的,以鼓励自动续订并减少任何受损证书可能被攻击者滥用的时间。

如果您有一个可公开访问的服务器并且有一个指向它的有效域名,那么 Let's Encrypt 可能是一个不错的选择。 Let's Encrypt 的服务器需要联系您的 Web 服务器或获取公共 DNS 记录以验证您控制域,因此将其用于本地网络防火墙后面的私有服务器可能有点棘手。 不过,仍然可以使用 Let's Encrypt 的基于 DNS 的授权挑战。

Let's Encrypt 不会为裸 IP 地址提供证书。

如果您需要 EV 证书或通配符证书,Let's Encrypt 不是一个选项。 请注意,Let's Encrypt 可以创建一个最多包含 100 个主机名的证书,因此您的用例可能实际上不需要通配符,您可能只需要一个涵盖所有现有子域的证书。

尽管如此,由于 Let's Encrypt API 的速率限制,如果您有很多子域,或者可以动态创建的动态子域,那么 Let's Encrypt 可能不适合。

自签名证书

可以使用已由其自己的私钥签名的 SSL 证书,完全无需证书颁发机构。 这称为自签名证书,在设置 Web 应用程序进行测试或供少数精通技术的用户使用时,通常建议使用此证书。

  • 流程:手动创建证书,无续费机制
  • 费用:免费
  • 验证: DV和OV
  • 信任: 默认无。 每个证书都必须手动标记为受信任,因为不涉及公共 CA
  • 通配符证书:
  • IP-only 证书: 是的,任何 IP
  • 有效期:任意

可以使用 OpenSSL 库附带的 openssl 命令制作自签名证书。 您可以在我们的教程 OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs 中找到所需的确切命令和更多有关 OpenSSL 的背景知识。

因为自签名证书不是由任何受信任的 CA 签名的,所以您需要手动将证书标记为受信任,这个过程在每个浏览器和操作系统中都不同。 此后,该证书将像任何普通的 CA 签名证书一样工作。

当您只需要手动管理少数客户端上的信任时,自签名证书非常适合一次性使用,并且不介意在没有更多手动操作的情况下无法撤销或更新它的事实。 这通常足以满足开发和测试目的,或者对于只有少数人会使用的自托管 Web 应用程序。

私人证书颁发机构

可以创建自己的私有证书颁发机构并使用它来签署证书。 您的用户需要手动安装并信任您的私有 CA,然后才能信任其任何证书。

  • 流程: 手动创建和更新证书,以及手动设置 CA 本身
  • 费用:免费
  • 验证: DV和OV
  • 信任: 默认无。 您必须手动将私有 CA 证书分发给客户端以建立信任
  • 通配符证书:
  • IP-only 证书: 是的,任何 IP
  • 有效期:任意

与自签名证书一样,您可以使用 OpenSSL 库附带的命令行工具创建私有 CA,但是已经开发了一些替代接口来简化该过程。 tinyCA是这个进程的图形界面,caman是一个命令行程序。 两者都可以更轻松地创建 CA,然后颁发、更新和撤销证书。

如果您要创建多个证书并且可以手动为您的用户分发和安装您的 CA,那么私有 CA 是一个不错的选择。 这可能会限制您在组织内部使用或在能够正确安装 CA 的技术精通的用户小组中使用。 较大的 IT 部门通常有办法自动将 CA 部署给他们的用户,从而使该解决方案对他们更具吸引力。

与必须手动将每个证书标记为受信任的自签名证书不同,您只需安装私有 CA 一次。 然后,从该 CA 颁发的所有证书都将继承该信任。

一个缺点是运行 CA 会产生一些开销,并且需要了解如何以安全的方式进行设置和维护。

如果正确的吊销对您的使用很重要,您还需要为证书吊销列表维护一个 HTTP 服务器或一个 OCSP 响应程序。

结论

我们已经查看了一些用于获取或创建 SSL 证书的不同选项。 无论哪种方式最适合您的情况,添加 SSL 保护都有助于保护您的服务和用户的数据、隐私和安全。

如果您想深入了解 SSL 和我们讨论过的选项,以下链接可能会有所帮助:

  • OpenSSL 文档 详细描述了该库及其命令
  • CA/浏览器论坛 是证书颁发机构和浏览器供应商制定有关 CA 运行方式的要求和最佳实践的地方。 这包括诸如证书的有效期以及是否应为非公共域名颁发证书等规则
  • Let's Encrypt CA 有更多关于 ACME 协议的信息