Let's Encrypt 简介

简介

让我们加密是一个开放的自动化证书颁发机构,它使用ACME(自动证书管理环境)协议)向任何兼容的客户端提供免费的TLS/SSL证书。这些证书可用于加密您的Web服务器和您的用户之间的通信。有几十个客户端可用,它们用各种编程语言编写,并与流行的管理工具、服务和服务器进行了许多集成。

最流行的ACME客户端,Certbot,现在由电子前沿基金会.)开发除了验证域所有权和获取证书外,Certbot还可以在APACHE)和NGINX)Web服务器上自动配置tls/ssl。

本教程将简要讨论证书颁发机构和加密的工作原理,然后回顾几个流行的ACME客户端。

什么是Certificate Authority?

证书颁发机构(CA)是加密签名TLS/SSL证书以保证其真实性的实体。浏览器和操作系统有一个受信任的CA列表,用于验证站点证书。

直到最近,大多数CA都是对其验证和签名服务收费的商业运营。通过完全自动化这一过程,并依靠赞助和捐款为必要的基础设施提供资金,让我们的加密对用户免费。

有关证书和不同类型的证书颁发机构的更多信息,您可以阅读[我们加密、商业和私有证书颁发机构以及自签名SSLSSLTM Certificates](https://andsky.com/tech/tutorials/a-comparison-of-let-s-encrypt-commercial-and-private-certificate-authorities-and-self-signed-ssl-certificates).的比较

接下来,我们来看看加密是如何进行自动域验证的。

我们来看看加密的原理

让我们来加密的ACME协议定义了客户端如何与其服务器通信以请求证书、验证域所有权和下载证书。它目前正在成为正式的iETF标准。

让我们加密Offers_DOMAIN-VALIDATES_CERTIFICATES,这意味着它们必须检查证书请求是否来自实际控制域的人。它们通过向客户端发送唯一令牌,然后发出Web或DNS请求以检索从该令牌派生的密钥来实现这一点。

例如,对于基于HTTP的质询,客户端将根据唯一令牌和帐户令牌计算密钥,然后将结果放在一个文件中由Web服务器提供服务。让我们加密服务器,然后在http://example.com/.well-known/acme-challenge/token.上检索文件如果密钥正确,则客户端已证明可以控制example.com上的资源,服务器将签名并返回证书。

ACME协议定义了您的客户端可以用来证明域所有权的多个质询。HTTPS质询类似于HTTP,不同之处在于,客户端将提供包含密钥的自签名证书,而不是文本文件。Dns质询在dns TXT记录中查找密钥。

Certbot让我们加密客户端

Certbot是目前最受欢迎的We‘s Encrypt客户端。它包含在大多数主要的Linux发行版中,并且包含了方便的针对Apache和Nginx的自动配置功能。安装后,获取证书并更新您的Apache配置的过程如下所示:

1sudo certbot --apache -d www.example.com

Certbot将询问几个问题、运行质询、下载证书、更新您的Apache配置并重新加载服务器。然后,您应该能够使用您的Web浏览器导航到https://www.example.com。将出现绿色锁,指示证书有效且连接已加密。

由于我们加密证书的有效期仅为90天,因此设置自动续订流程非常重要。以下命令将续订计算机上的所有证书:

1sudo certbot renew

将上述命令放在crontab中,每天运行它,证书将在到期前30天自动续订。如果证书最初是通过--apache--nginx选项创建的,Certbot会在续费成功后重新加载服务器。

如果您想了解更多关于cron和Tasks](https://andsky.com/tech/tutorials/how-to-use-cron-to-automate-tasks-on-a-vps).`的信息,请参考教程《[如何使用cron使crontabs自动化

其他客户端

由于ACME协议是开放的,并且有详细的文档记录,因此已经开发了许多替代客户端。让我们加密在他们的网站上维护着一份ACME clients](https://letsencrypt.org/docs/client-options/)的列表。大多数其他客户端没有Certbot的自动Web服务器配置功能,但它们有其他可能会吸引您的功能:

  • 有一个客户端是用几乎所有编程语言编写的,包括外壳脚本、Go和Node.js。如果您要在受约束的环境中创建证书,并且不希望包含Python和其他Certbot依赖项,则这一点可能很重要
  • 有些客户端可以在没有 超级用户权限** 的情况下运行。运行尽可能少的特权代码通常是个好主意
  • 许多客户端可以通过使用您的DNS提供商的API自动创建相应的TXT记录来自动执行基于DNS的挑战。DNS挑战使一些更棘手的用例成为可能,例如加密不可公开访问的Web服务器。
  • 一些客户端实际上集成到Web服务器、反向代理或负载均衡器中,使得配置和部署变得格外容易

一些较受欢迎的客户包括:

  • 乐高:用Go编写,乐高是一个文件的二进制安装,在使用dns挑战时支持许多dns提供商。
  • DNSacme.sh是一个简单的外壳脚本,可以在非特权模式下运行,也可以与30多个acme.sh:提供商交互
  • 球童:球童是在Go中编写的一个完整的Web服务器,内置了对We‘s Encrypt的支持。

现在有更多的客户端可用,许多其他服务器和服务正在通过集成We‘s Encrypt Support来自动安装TLS/SSL。

结论

我们已经了解了加密的基本原理,并讨论了一些可用的客户端软件。如果您想了解使用各种软件进行加密的更多详细说明,以下教程是一个很好的起点:

Published At
Categories with 技术
comments powered by Disqus