专栏首页程序猿成长计划【译】Let’s Encrypt – 免费的SSL/TLS证书

【译】Let’s Encrypt – 免费的SSL/TLS证书

每一个建立过安全站点的人都在如何维护证书这个问题上深受困扰。Let’s Encrypt 推荐的客户端 Certbot,能够自动的消除这些用户的痛点,并且让站点维护人员能够使用简单的命令开启和管理站点的HTTPS功能。

不需要验证邮件,不需要去编辑复杂的配置,也不再你的站点因为证书过期而无法正常工作。当然,因为Let’s Encrypt提供的是免费证书,因此也不需要付费。

本文简要描述了如何使用Certbot进行证书管理。(欢迎使用任何兼容的客户端;相关说明请查看这些项目的指导页面)。

如果你想知道更多关于它是工作原理,查看我们的 工作原理 页面。

安装客户端软件

如果你的操作系统包含了一个certbot的安装包,从这里安装它 ,然后使用相应的certbot命令。如果没有的话,则可以使用我们提供的cert-auto包装器脚本快速的获取一份。

$ git clone https://github.com/certbot/certbot
$ cd certbot
$ ./certbot-auto --help 

certbot-autocertbot命令拥有相同的命令行参数;它会安装所有的依赖并且自动更新 Certbot 的代码(这个过程下载的文件比较大,因此比较慢)。

使用限制

Let’s Encrypt 每周会产生有限数量的证书,确切的数量请查看这篇文章。如果你第一次使用certbot,你可能希望添加--test-cert标识,并且使用一个未使用的域名。这样将会从staging服务器获得一个证书,它们在浏览器中是无效的,除此之外,其它过程都是相同的,因此你可以测试各种配置选项而不会超过这个数量限制。

如何使用客户端

Cerbot 支持很多插件,可以用它们来获取和安装证书。下面包含了一些选项的使用例子:

如果你在近期发布的Debian操作系统上运行Apache服务,你可以尝试Apache插件,使用它可以自动获取和安装证书:

certbot --apache

目前在其它平台上还没有实现自动安装,因此你必须使用命令certonly进行安装。下面是一些例子:

要获取一个可以在任何web服务器的webroot目录上能够运行证书,需要使用“webroot”插件:

certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com -w /var/www/thing -d thing.is -d m.thing.is

这个命令将会获取example.com,www.example.com, thing.is 和 m.thing.is 的单个证书,它将会把前两个域名生成的文件放到/var/www/example目录,后面两个放到/var/www/thing目录。

例如使用内建的“独立”web服务器获取 example.com 和 www.example.com 的证书(你可能需要临时停止已经存在的web服务器):

certbot certonly --standalone -d example.com -d www.example.com

证书续订

从0.4.0版本开始,Certbot增加了高级的renew子命令,它可以用于使用之前获取证书时相同的配置续订所有的证书。你可以通过运行以下命令测试一下:

certbot renew --dry-run

上述命令会获取一个测试证书,它不会对你的系统产生任何持久化的修改。如果你觉得这个结果还可以,可以运行下面的命令:

certbot renew

如果你想续订某一个证书(而不是所有的)或者修改某一个用于续订的配置参数,你可以使用certbot certonly命令和其它特定的配置获取单个证书。当使用certbot certonly命令的时候,你可以得到单个证书的续订。使用指定-d选项指定你希望续订的域名所覆盖的每一个域名。

注意: 从0.4.0开始,Certbot将会记录任何你使用certonlyrenew时选择的配置,未来使用renew的时候将会使用最近的配置。在版本0.3.0中,Certbot只会记录第一次获取证书时的配置,并不会使用之后续订时的配置替换它。

动词renew被设计用来半自动或者自动的使用,因此它也隐含着--non-interactive的意味。该选项意味着Certbot不会停下来与你进行交互;对于自动续订来说,使用该选项是非常不错的,但是因为指定该选项的话你无法与Certbot进行交互,因此你应该确保你所有的配置都被正确的设置。

选项--dry-run用于从我们的staging服务器获取证书。获取的证书不会保存到磁盘上,并且你的配置也不会被更新,因此你可以用来测试是否的renew或者certonly命令能够正确的执行续订。从staging服务器获取证书不会影响生产服务器的数量限制。

如果你想要改变之前指定的值,你可以在续订时,在命令行中指定一个新的选项,例如:

certbot renew --rsa-key-size 4096

运行certbot renew命令将会续订所有在续订窗口的证书(默认情况下,证书过期时间为30天)。如果你想要续订单个证书,你应该使用certbot certonly -d命令指定要续订的证书的域名。例如:

certbot certonly --keep-until-expiring --webroot -w /var/www/example.com -d example.com,www.example.com -w /var/www/thing -d thing.is,m.thing.is

如果你的证书安装在本地服务器,则一旦certonly命令执行完成,你需要重载服务器的配置文件(例如,对于apache2服务器来说执行server apache2 reload命令)。

开发自己的续订脚本

对于如何建立自动续订功能,请参考续订文档

撤销证书

使用下面的命令撤销撤销一个证书

$ certbot revoke --cert-path example-cert.pem

完整文档

更多关于Certbot的信息,请参考 完整文档。已知的一些问题使用Github进行跟踪。在提交新的问题的时候请先参考最近是否有相似的问题。

获得帮助

在阅读文档和问题列表之后,如果你需要额外的帮助的话,请尝试我们的帮助社区论坛

查看我们的 隐私策略.

查看我们的 商标策略.

Let’s Encrypt是由非营利的互联网安全研究小组(ISRG)管理的一个免费,自动化,开放的证书授权机构。

1 Letterman Drive, Suite D4700, San Francisco, CA 94129

Linux Foundation是Linux基金会的注册商标。Linux是由Linus Torvalds注册的商标


原文:

Let's Encrypt – Getting Started

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 跟我一起学Laravel-常见问题

    线上环境肯定是不希望storage目录在项目目录下的,修改storage目录需要新建一个配置文件path.php,增加以下配置

    用户2131907
  • Unix系统服务监控 Monit

    Monit 是Unix系统中用于管理和监控进程、程序、文件、目录和文件系统的工具。使用 Monit 可以检测进程是否正常运行,如果异常可以自动重启服务以及报警,...

    用户2131907
  • 编译源码安装PHP 5.4

    我们使用vagrant建立虚拟环境,这里使用"chef/centos-6.5"这个box,这个box是一个比较纯净的CentOS-6.5系统。

    用户2131907
  • 【董天一】IPFS: pubsub功能的使用

    发布订阅模式(Publish–subscribe pattern),最早是由苹果公司在 Mac OS 引入。

    圆方圆学院
  • 如何使用Ubuntu 16.04上的Let's Encrypt保护Apache

    本教程将向您展示如何在运行Apache作为Web服务器的Ubuntu 16.04服务器上设置Let's Encrypt的TLS / SSL证书。

    新巴子
  • python virtualevn的安装

    你很可能想在开发中用上 virtualenv,如果你有生产环境的 shell 权限,你同样会乐于在生产环境中使用它。 virtualenv 解决了什么问题? 如...

    py3study
  • 09Document对象

    Dreamy.TZK
  • [AWR报告]SQL*Net message to client等待事件

    注意这里的信息是从实例起来的汇总,同时由于SID是可以复用的,所以查看出来的SID并不代表上次的语句是这个等待

    bsbforever
  • 云数据仓库套件Sparkling简介

    云数据仓库套件 Sparkling(Tencent Sparkling Data Warehouse Suite)基于业界领先的 Apache Spark 框架...

    腾讯云数仓与数据湖团队
  • hibernate persist update 方法没有正常工作(不保存数据,不更新数据)

    在工程中通过spring aop的方式配置事务,使用hibernate做持久化。在代码实现中使用hibernate persit()方法插入数据到数据库,使用h...

    用户3148308

扫码关注云+社区

领取腾讯云代金券