代码之家  ›  专栏  ›  技术社区  ›  Laimonas Sutkus

如何在没有交互的情况下安装Certbot(让我们加密)?

  •  61
  • Laimonas Sutkus  · 技术社区  · 7 年前

    我正在编写一个bash脚本,该脚本在新安装的服务器中引导整个项目基础设施,并且我想用letcecrypt certbot配置ssl安装。执行行后:

    certbot --nginx -d $( get_server_name ) -d www.$( get_server_name ).com
    

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

    2 回复  |  直到 4 年前
        1
  •  97
  •   match    7 年前

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

    --non-interactive --agree-tos -m webmaster@example.com
    

    此处提供了配置选项的完整列表:

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

        2
  •  23
  •   Jesse Nickles    4 年前

    有几个 inline flags and "subcommands" (他们的昵称)由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的类型 installer plugin (环境)您需要,例如,您可以从“独立”或“手动”等中选择。。。对于大多数情况,如WordPress web服务器,您应该选择“webroot”,以便Certbot可以通过公共根轻松验证所有权(确保访问 /.well-known* 未被阻止):

    --webroot -w /var/www/html/
    

    这是我们的完整命令 use in 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/
    

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