使用Certbot一键为自己的网站部署SSL(HTTPS)

目前,HTTPS已广泛运用于各种大小网站,提高了网站访问的安全性。传统方式部署SSL较为麻烦,需要手动购买证书或获取免费证书(通常有效期只有三个月到一年),还需要在快到期时手动更换证书,并且部署到网站上也比较麻烦。有没有方便、省心,还支持证书自动续期的SSL部署方式呢?这就是本文要介绍的实用程序——Certbot。

Certbot是什么?

Certbot是由电子前哨基金会(EFF)开发的用于自动获取由Let’s Encrypt颁发的免费证书的ACME客户端。它可以通过一行简单的命令自动执行证书颁发、安装和自动续期。

安装Certbot

官方推荐方式(我不太推荐)

官方推荐通过Snap来安装Certbot。对于Ubuntu,系统已自带snapd,直接执行以下命令即可安装:

$ sudo snap install --classic certbot

对于非Ubuntu系统,由于系统没有自带snapd,官方建议先安装snapd再执行上述命令安装Certbot,具体自行查询Snap官网。

非Ubuntu系统还是别装snapd了。
Snap是一个由Canonical开发的软件包管理系统,旨在解决不同Linux发行版之间的软件包依赖问题,便于分发闭源软件。该系统的软件包体积庞大(相比同类型的Flatpak大一倍以上)、性能低下、权限管理严格,并且软件源由Canonical完全把控,广受用户诟病。近年来,Canonical的种种强推Snap的措施(例如将APT里的浏览器替换为Snap包),也使得社区里反对Snap的声音越来越多。

我推荐的安装方式

我推荐使用系统自带的软件包管理器来安装(除了snap)。

常识:常见的Linux发行版都自带了一套软件包管理器,安装、升级软件和系统组件都非常方便。

简要介绍一下各Linux发行版使用软件包管理器安装软件的命令:

Debian/Ubuntu:sudo apt install <软件包名>
Fedora/CentOS/RHEL/Rocky Linux:sudo yum install <软件包名>
Arch/Manjaro:sudo pacman -S <软件包名>

先查询一下系统提供了哪些certbot相关软件包:

Debian/Ubuntu:apt search certbot
Fedora/CentOS/RHEL/Rocky Linux:yum search certbot
Arch/Manjaro:pacman -Ss certbot

随即会输出像这样的列表:

若您使用了Apache,就安装certbot和certbot-apache(在列表里找名字类似的就行);
若您使用了nginx,就安装certbot和certbot-nginx(在列表里找名字类似的就行);
若您使用了CloudFlare DNS,在列表里找到相应的带cloudflare的包并装上。
其他的扩展可根据自己的需求安装。
列表中后缀为-doc的软件包都是文档,无实际功能。

若您在没安装nginx的情况下安装certbot-nginx,系统可能会自动帮您安装nginx,可能会造成不必要的麻烦。Apache同理。
其实,Snap版的Certbot自带上面所有扩展,无需另外安装。

可以用Docker来部署Certbot吗?

自找麻烦。用Docker装好之后,要配置很多东西,远不如Snap或系统方式安装便捷。详情可以看这篇文章,以及这篇文章

因为Docker天生的隔离特性,Docker版Certbot默认只有获取证书的功能,若要使其自动安装证书需要对Docker进行繁琐的权限配置操作,这就丧失了Certbot的便捷性。

使用Certbot

如果您的Apache或nginx是通过系统的软件包管理器安装的,那么Certbot使用起来非常简单,只需要执行这条命令:

$ sudo certbot

如果您使用了宝塔之类的管理面板,它们并没有在系统默认目录安装Apache/nginx,只需要指定一下Apache/nginx安装目录即可:(代码仅作举例,请自行查询相应的安装目录)

$ sudo certbot --nginx --nginx-server-root=/www/server/nginx/conf/
或
$ sudo certbot --apache --apache-server-root=/www/server/apache/conf/

按提示操作即可,首次使用会要求输入您的邮箱等信息。安装后,Certbot会注册一个系统服务,用于自动更新证书。

如何给用Docker部署的网站使用Certbot?

在用于反向代理的那个网页服务器(Apache或nginx)执行Certbot即可。

什么?你的反代服务器也是用Docker装的?那你要不试试在容器里面装一个Certbot……或者建议改成在宿主安装nginx用作反代好了。

同类软件

  • Certbot-auto:Certbot的前辈,现已停止维护
  • acme.sh:另一个获取Let’s Encrypt证书的脚本
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇