在Ubuntu 20.04上安装Certbot。

我一直在跟随一些教程来为我的服务器(Node应用程序)添加SSL。
我尝试在我的Ubuntu 20.04服务器上使用以下命令安装Certbot:
sudo add-apt-repository ppa:certbot/certbot

但是收到了警告,没有安装。
This is the PPA for packages prepared by Debian Let's Encrypt Team and backported for Ubuntu.                                                                         
Note: Packages are only provided for currently supported Ubuntu releases.
More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot
Press [ENTER] to continue or Ctrl-c to cancel adding it.*

在搜索了互联网之后,有提到不要使用PPA,而是使用早期的独立版本,还有提到使用snap。但我找不到一个确切的答案。我正在使用Express而不是nginX。
请问有人可以建议如何安装吗?
更新:
运行了sudo snap install certbot。
结果:
error: This revision of snap "certbot" was published using classic confinement and thus may perform
   arbitrary system changes outside of the security sandbox that snaps are usually confined to,
   which may put your system at risk.
   If you understand and want to proceed repeat the command including --classic.

1这不是安装软件包的命令,而是使用 sudo add-apt-repository ppa:certbot/certbot 将 certbot PPA 添加到可信源列表中。既然你已将其添加到源列表中,现在可以安装他们发布的软件包。运行该命令后,请确保通过 sudo apt-get update 进行更新,然后就可以安装他们发布的软件包了(他们在此处列出:https://launchpad.net/~certbot/+archive/ubuntu/certbot/+packages)。 - user96931
@user96931的评论中的链接已经非常过时。更现代的PPA,如果你使用那个评论中的命令,也已经过时了,他们的首页上写着“PPA已被弃用”(这是他们的强调,而不是我的),并指向了snap安装的说明。主要的Ubuntu软件包几乎是最新的(它们目前已经过去了五个次要版本)。 - Adam Katz
4个回答

你可以使用APT、PIP或SNAP在Focal / Ubuntu 20.04上进行安装。
(至少目前来说,APT是可行的。)
但是,请不要同时使用多种安装方法或混合使用它们。
听起来你可能已经混合使用了安装方法。 你可能需要清除所有内容并重新开始?
运行以下命令来清理和删除Certbot。 如果你已经创建了证书,你将需要重新创建它们。 警告:以下命令将完全删除Certbot和相关文件!
 sudo apt remove certbot* --purge  
 sudo apt-add-repository --remove ppa:certbot/certbot  
 sudo apt update  
 sudo snap remove certbot  
 sudo -H pip3 uninstall certbot*  
 pip3 uninstall certbot*  
 sudo rm -rf /etc/letsencrypt

只要忽略任何错误(未找到的),那就可以涵盖所有情况 - 包括系统范围和仅用户。
现在决定你想要如何安装它。
选择一个并且只能选择一个。不要混合安装方法。
Snap 安装Snap足够简单,但我个人不喜欢使用它。我更喜欢使用Python pip(截至目前为止)。Snap将是我的第二选择。
Snap已经在Certbot网站上针对Ubuntu Focal进行了很好的文档记录,作为默认的安装方法。
Pip 如果你选择pip,你需要这样做(用于系统范围/根用户):
 sudo apt install python3-pip
 sudo -H pip3 install certbot

这将创建/etc/letsencrypt/文件夹结构和默认文件。
Certbot可执行文件将位于/usr/local/bin/certbot - 确保它在您的路径中。 您可能还需要设置自动续订并可能添加插件。 这里有更详细的说明

Apt

sudo apt show certbot

软件包:certbot 版本:0.40.0-1ubuntu0.1 优先级:extra 部分:universe/web 来源:python-certbot 出处:Ubuntu

( https://packages.ubuntu.com/focal/certbot )

APT版本一直落后于许多版本。 这次也不例外。 当前的APT版本是v0.40.0 ->(发布于2019年11月5日)。 当前的PIP和SNAP版本是v1.19.0(截至2021年10月1日)。
我建议使用比APT提供的更新一点的东西。由于Certbot处理安全/SSL,并且有时LetsEncrypt/Certbot团队会进行更改,您肯定希望立即更新。如果您使用APT版本,则可能无法做到这一点。据我所知,您也不能在Ubuntu Focal/20上使用Certbot PPA
因此,请选择pip或snap作为您的安装方法。

1太棒了!尤其是关于“清理”的部分。 - MestreLion
Pip安装方法不太好,因为作为certbot依赖项安装的libcrypto可能会以与Pip问题11795相同的方式破坏Pip。最好使用虚拟环境来安装Pip软件包。 - undefined

他们已经摆脱了apt,现在是`snap install certbot --classic`。

1抱歉问个新手问题,上述命令安装的是哪个版本?- 它被称为独立安装吗? - Orange Juice Jones
@Jet 我不相信有愚蠢的问题!现在回答您的问题是:它将安装最新版本。 - Nate
1我在Certbot网站上找到了另一个命令,'snap install --classic certbot',这个对我的情况适用吗? 此外,在我之前提出的问题中,我运行了'sudo add-apt-repository ppa:certbot/certbot',我检查了文件夹/etc/apt/sources.list.d/,发现有一个名为certbot-ubuntu-certbot-focal.list的文件,我应该删除它吗?(我还没有运行'apt-get update') - Orange Juice Jones
1嗨,我运行了'sudo snap install certbot'命令,但遇到了错误并被要求使用--classic选项。我已经更新了问题。 - Orange Juice Jones
@Jet 哦,抱歉我忘了那个,我刚刚更新了我的回答。 - Nate
看起来已经安装好了:) 接下来我需要为NodeJS应用程序创建密钥。这个指南是否正确(尽管我没有使用nginx)?- https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx - Orange Juice Jones
@Jet 我会使用这个链接:https://certbot.eff.org/lets-encrypt/ubuntufocal-other - Nate
1仅限使用Express和Node.js - Orange Juice Jones
好的,我更新了我的评论。 - Nate
现在你不需要使用 snapd/snap。再试一次。https://github.com/certbot/certbot/issues/7950#issuecomment-862731377 - B. Shea
请更新你的回答 - 这是错误的信息(请参考之前的评论)。你可以使用SNAP、PIP或APT - 也可以在这里看到我的回答。 - B. Shea
踩。我等了两年。 - B. Shea

安装适用于Ubuntu 20.04的最新版本github certbot
sudo curl -o- https://raw.githubusercontent.com/vinyll/certbot-install/master/install.sh | bash

快乐编码!


B. Shea的回答中所详细介绍的那样,安装certbot有三种基本选择:通过apt、Pip或Snap。而较好的选择是Pip和Snap。个人而言,我不喜欢Snap——它提供的安装包臃肿懒散,总是包含所有的依赖项。因此,我建议使用Pip安装路径。
重要的是,不要简单地将certbot Pip包安装到系统范围内,因为这会破坏Pip和其他使用OpenSSL的Python安装。(如果您已经遇到了这个问题,请先修复它。)
相反,使用虚拟Python环境。有官方基于Pip的certbot安装说明遵循这种技术,下面是我对它们的变体,我认为它更适合Ubuntu系统的目录结构。
sudo apt update
sudo apt install python3 python3-venv libaugeas0

sudo python3 -m venv /usr/local/share/certbot/
sudo /usr/local/share/certbot/bin/pip install --upgrade pip
sudo /usr/local/share/certbot/bin/pip install certbot certbot
sudo ln -s /usr/local/share/certbot/bin/certbot /usr/local/bin/certbot

在您的终端上进行新登录后,您将可以使用certbot命令:
$ which certbot 
/usr/local/bin/certbot