无需交互即可安装Certbot letsencrypt

Lai*_*kus 8 bash ssl server lets-encrypt certbot

我正在编写一个bash脚本,它在新安装的服务器中引导整个项目基础结构,我想用letcecrypt certbot配置ssl安装.我执行行后:

certbot --nginx -d $( get_server_name ) -d www.$( get_server_name ).com
Run Code Online (Sandbox Code Playgroud)

我被提示几个问题.可以在没有任何交互的情况下运行certbot,同时将一些参数作为参数或其他东西传递吗?

mat*_*tch 21

您可以通过添加以下选项来"静默"运行certbot:

--non-interactive --agree-tos -m webmaster@example.com
Run Code Online (Sandbox Code Playgroud)

完整的配置选项列表可在此处获得:

https://certbot.eff.org/docs/using.html

  • 还包括“--域” (9认同)
  • 艾哈迈德,您缺少“--apache”或“--nginx”,或者您正在使用的任何服务器。顺便说一句,我发现“还包括`--domains`”注释不够充分 - 我不清楚服务器名称需要遵循它。这是我的完整命令格式,可以使用(root):`certbot --nginx --non-interactive --agree-tos --domains example.com --email webmaster@example.com` (3认同)
  • 请记住,“--non-interactive”并不是万无一失的,如果缺少 3 个强制标志,证书仍然无法生成(有关更多信息,请参阅我的答案)。 (2认同)

Jes*_*les 16

Certbot 提供了几个内联标志和“子命令”(它们的昵称),可以帮助使用 Bash 或 shell 脚本自动生成免费 SSL 证书的过程。

@match 提到的最相关的标志是:

  • --noninteractive ……或者…… --non-interactive

然而实际上这个标志并不是很有用,因为它没有多大用处。例如,如果脚本中缺少关键标志,则证书仍将无法生成。坦率地说,我认为 Certbot 取消上述标志会更好,因为它具有误导性。

以下是所需的最低标志:

  1. --agree-tos
  2. --register-unsafely-without-email ...或者... -m username@example.com
  3. -d example.com 和/或 -d www.example.com

您还必须指定您想要的 Let's Encrypt安装程序插件(环境)类型,例如您可以从“独立”或“手动”等中进行选择……对于大多数情况,例如 WordPress Web 服务器,您应该选择“webroot”以便 Certbot 可以通过公共根轻松验证所有权(确保访问/.well-known*不被阻止):

--webroot -w /var/www/html/
Run Code Online (Sandbox Code Playgroud)

这是我们在 SlickStack 中用来安装 SSL 证书的完整命令:

## install Certbot SSL certificate ##
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d ${SITE_TLD} -d www.${SITE_TLD} -d staging.${SITE_TLD} -d dev.${SITE_TLD} --register-unsafely-without-email --webroot -w /var/www/html/
Run Code Online (Sandbox Code Playgroud)

在我们的例子中,我们硬编码--cert-nameslickstack因为安装在每个VPS服务器上的网站只有一个,所以它使其他服务器管理任务(和脚本)更易于管理。但是,如果您在同一台服务器上安装多个域和 SSL 证书,您可以更改子命令--cert-name以在每个 TLD 域后命名,等等。这会影响 SSL 目录名称,从而有助于保持您的文件/文件夹整洁.