Certbot 系统要求

关于Certbot

Certbot通常由系统管理员直接在Web服务器上运行。在大多数情况下,在个人计算机上运行Certbot并不是有用的选择。以下说明与在服务器上安装和运行Certbot有关。

系统管理员可以直接使用Certbot来请求证书;他们应该不会允许非特权用户运行任意Certbot命令的root,因为Certbot允许其用户指定的任意文件位置和运行任意的脚本。

Certbot被打包用于许多常见的操作系统和Web服务器。通过访问certbot.eff.org检查是否为您的Web服务器的操作系统打包了certbot(或letsencrypt) ,在这里您还将找到针对系统的正确安装说明。

注意

除非您有非常特殊的要求,否则我们建议您使用软件包管理器提供的Certbot软件包。如果没有此类软件包,我们建议使用certbot-auto,它可以自动在您的系统上安装Certbot。

系统要求

Certbot当前需要在类似UNIX的操作系统上运行Python 2.7或3.5+。默认情况下,它需要以写root访问权限 /etc/letsencrypt/var/log/letsencrypt/var/lib/letsencrypt,绑定到端口80(如果使用standalone插件),并读取和修改Web服务器配置(如果使用apachenginx 插件)。如果这些都不适合您,则理论上可以在没有root特权的情况下运行,但是对于大多数希望避免以root身份运行ACME客户端的用户,letencrypt-nosudo或simp_le是更合适的选择。

Apache插件当前需要具有augeas 1.0版的操作系统;当前,它支持基于Debian,Ubuntu,Fedora,SUSE,Gentoo和Darwin的现代操作系统。

certbot-auto脚本的其他完整性验证可以通过验证其数字签名来完成。这需要本地安装gpg2,该软件包已打包在许多Linux发行版中,名称为gnupg或gnupg2。

使用进行安装certbot-auto需要512MB的RAM才能构建某些依赖项。从预构建的OS软件包安装可以避免此要求。您也可以临时设置交换文件。有关详细信息,请参见下面的“ Python虚拟环境问题”。

备用安装方法

如果您离线或操作系统未提供软件包,则可以使用另一种安装方法certbot

Snap

大多数现代Linux发行版(基本上是使用systemd的任何发行版)都可以安装打包成一个单元的Certbot。目前对Certbot snap的支持处于测试阶段,并且仅限于x86_64体系结构,但是它提供了一种简便的方法来确保您具有最新版本的Certbot,并具有预先配置的自动证书更新等功能。

通过选择服务器软件,然后在“System”下拉菜单中选择“snapd”,可以在https://certbot.eff.org/instructions 上找到有关安装Certbot快照的说明。(无论您使用哪种操作系统,都应选择“snapd”)

Certbot-Auto

certbot-auto包装脚本安装Certbot,从您的网络服务器操作系统获取一些依赖,并把他人在Python虚拟环境。您可以按以下方式下载并运行它:

wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto
/usr/local/bin/certbot-auto --help

要删除certbot-auto,只需将其及其放在/opt/eff.org下的文件以及可能创建的任何cronjob或systemd计时器删除。

要检查certbot-auto脚本的完整性,可以使用以下步骤:

user@webserver:~$ wget -N https://dl.eff.org/certbot-auto.asc
user@webserver:~$ gpg2 --keyserver pool.sks-keyservers.net --recv-key A2CFB51FA275A7286234E7B24D17C995CD9775F2
user@webserver:~$ gpg2 --trusted-key 4D17C995CD9775F2 --verify certbot-auto.asc /usr/local/bin/certbot-auto

最后一条命令的输出应类似于:

gpg: Signature made Wed 02 May 2018 05:29:12 AM IST
gpg:                using RSA key A2CFB51FA275A7286234E7B24D17C995CD9775F2
gpg: key 4D17C995CD9775F2 marked as ultimately trusted
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   2  signed:   2  trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: depth: 1  valid:   2  signed:   0  trust: 2-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2027-11-22
gpg: Good signature from "Let's Encrypt Client Team <letsencrypt-client@eff.org>" [ultimate]

certbot-auto命令将自动更新为最新的客户端版本。由于certbot-auto是的包装器certbot,因此它接受完全相同的命令行标志和参数。

要获得完整的命令行帮助,您可以输入:

/usr/local/bin/certbot-auto --help all

Python虚拟环境的问题

在内存少于512MB的低内存系统(例如VPS)上,将无法建立所需的Certbot依赖项。如果pip输出中包含类似的内容,则可以识别出此信息。您可以通过创建临时交换文件来解决此限制:internal compiler error: Killed (program cc1)

user@webserver:~$ sudo fallocate -l 1G /tmp/swapfile
user@webserver:~$ sudo chmod 600 /tmp/swapfile
user@webserver:~$ sudo mkswap /tmp/swapfile
user@webserver:~$ sudo swapon /tmp/swapfile

构建虚拟环境后,禁用并删除交换文件:

user@webserver:~$ sudo swapoff /tmp/swapfile
user@webserver:~$ sudo rm /tmp/swapfile

使用Docker运行

Docker是一种非常简单快捷的获取证书的方法。但是,此操作模式无法安装证书或配置您的Web服务器,因为我们的安装程序插件无法从Docker容器内部访问您的Web服务器。

大多数用户应使用操作系统软件包,或作为备用certbot-auto。仅当您确定知道自己在做什么并且有充分的理由这样做时,才应使用Docker。

我们的密码套件页面提供了有关推荐密码套件的一些信息。如果这些都不适合您,则绝对应该使用certbot-auto方法,该方法使您能够使用涵盖这两个主题的安装程序插件。

如果您仍然不确定并决定使用此方法,请从服务器上将您要申请认证的域解析为该服务器,然后安装Docker,然后发出类似于以下命令的命令。如果您将Certbot与Standalone插件一起使用,则需要通过在之前或在命令行中添加类似的内容来使其可以从容器外部访问其使用的端口。-p 80:80``-p 443:443``certbot/certbot

sudo docker run -it --rm --name certbot
            -v "/etc/letsencrypt:/etc/letsencrypt"
            -v "/var/lib/letsencrypt:/var/lib/letsencrypt"
            certbot/certbot certonly

使用certonly命令运行Certbot 将获得证书并将其放置在/etc/letsencrypt/live系统上的目录中 。由于Certonly无法从Docker中安装证书,因此您必须根据Web服务器提供商建议的过程手动安装证书。

https://hub.docker.com/u/certbot上还提供了每个Certbot的DNS插件的Docker映像,这些映像可自动为受欢迎的提供商进行DNS域名验证。要使用一个图像,只需certbot/certbot在上面的命令中替换 为您要使用的图像名称即可。例如,要将Certbot的插件用于Amazon Route 53,则可以使用certbot/dns-route53。您可能还需要向Certbot添加标志和/或挂载其他目录以提供对DNS API凭据的访问,如DNS插件文档中所指定。如果您想从Let’s Encrypt的ACMEv2服务器上获取通配符证书,则还需要在命令行中包含通配符证书。--server https://acme-v02.api.letsencrypt.org/directory

操作系统软件包

Arch Linux

sudo pacman -S certbot

Debian

如果您运行Debian Buster或Debian testing / Sid,则可以通过以下命令轻松安装certbot软件包:

sudo apt-get update
sudo apt-get install certbot

如果您运行Debian Stretch,我们建议您使用Debian backports仓库中的软件包。首先,您必须按照https://backports.debian.org/Instructions/上的说明进行操作, 以启用Stretch backports存储库(如果尚未启用)。然后运行:

sudo apt-get install certbot -t stretch-backports

在所有这些情况下,还可以使用软件包来帮助Certbot与Apache,nginx或各种DNS服务集成。如果您使用的是Apache或nginx,我们强烈建议您安装python-certbot-apachepython-certbot-nginx软件包,以便Certbot可以完全自动化服务器的HTTPS配置。这些软件包的完整列表可以通过以下命令找到:

apt search 'python-certbot*'

可以通过运行上面相同的安装命令来安装它们,但用certbot所需软件包的名称代替。

Debian Jessie没有可用的Certbot软件包,Jessie用户应该使用certbot-auto。

Ubuntu

如果您运行Ubuntu Trusty,Xenial或Bionic,则可通过官方PPA获得certbot,可以按以下方式安装:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update

然后,可以使用以下命令安装certbot:

sudo apt-get install certbot

(可选)要安装Certbot Apache插件,可以使用:

sudo apt-get install python-certbot-apache

Fedora

sudo dnf install certbot python2-certbot-apache

FreeBSD

  • Port: cd /usr/ports/security/py-certbot && make install clean
  • Package: pkg install py27-certbot

Gentoo

Gentoo Portage中提供了Certbot的官方客户端。如果要使用Apache插件,则必须单独安装:

emerge -av app-crypt/certbot
emerge -av app-crypt/certbot-apache

如果使用默认的Gentoo,则在使用Apache插件时,将遇到“找不到SSLCertificateFile指令”或“找不到证书的SSLCertificateKeyFile指令”错误 httpd.conf。您可以通过注释掉以下两行来解决此问题 /etc/apache2/httpd.conf

替换部分

<IfDefine SSL>
LoadModule ssl_module modules/mod_ssl.so
</IfDefine>

用此部分替换上面

#<IfDefine SSL>
LoadModule ssl_module modules/mod_ssl.so
#</IfDefine>

目前,这是Apache插件在安装证书时识别适当指令的唯一方法。注意:其他插件不需要此更改。

NetBSD

  • 从源代码构建: cd /usr/pkgsrc/security/py-certbot && make install clean
  • 安装预编译的软件包: pkg_add py27-certbot

OpenBSD

  • Port: cd /usr/ports/security/letsencrypt/client && make install clean
  • Package: pkg_add letsencrypt

警告
要尝试安装命令作为超级用户/根和/或不虚拟的环境中,这些操作模式可能会损坏您的操作系统,Certbot团队不支持python certbot/setup.py install``python pip install certbot``easy_install certbot``sudo python certbot/setup.py install``sudo pip install``sudo ./venv/bin/...

本文章首发在 网安wangan.com 网站上。

上一篇 下一篇
讨论数量: 0
只看当前版本


暂无话题~