我正在撰写一个Bash脚本,它可以在新安装的服务器上引导整个项目基础架构,并且我想使用Let's Encrypt Certbot配置SSL安装。 在执行以下行后:
certbot --nginx -d $( get_server_name ) -d www.$( get_server_name ).com
我被提示回答几个问题。是否可以在传递参数或其他方式时不需要任何交互来运行certbot?
我正在撰写一个Bash脚本,它可以在新安装的服务器上引导整个项目基础架构,并且我想使用Let's Encrypt Certbot配置SSL安装。 在执行以下行后:
certbot --nginx -d $( get_server_name ) -d www.$( get_server_name ).com
我被提示回答几个问题。是否可以在传递参数或其他方式时不需要任何交互来运行certbot?
您可以通过添加以下选项,使Certbot“静默”运行:
--non-interactive --agree-tos -m webmaster@example.com
完整的配置选项列表在此处提供:
有几个内联标志和“子命令”(它们的昵称)由Certbot提供,可以帮助使用Bash或shell脚本自动化生成免费的SSL证书。
如@match所提到的,最相关的标志是:
--noninteractive
...或者... --non-interactive
然而实际上这个标志并没有太大的帮助,因为它并没有做很多事情。如果你的脚本中缺少重要的标志,例如,证书仍将无法生成。坦白地说,我认为Certbot最好取消上述标志,因为它有些误导。
以下是最低限度需要的标志:
--agree-tos
--register-unsafely-without-email
...或... -m username@example.com
-d example.com
和/或 -d www.example.com
您还必须指定您想要的Let's Encrypt 安装程序插件(环境)的类型,例如,您可以从“standalone”或“manual”等中选择... 对于大多数情况,例如WordPress Web服务器,您应该选择“webroot”,这样Certbot可以通过公共根轻松验证所有权(确保未阻止对/.well-known*
的访问):
--webroot -w /var/www/html/
这是我们在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证书,您可以将子命令--cert-name
更改为命名为每个TLD域,以此类推。这会影响SSL目录名称,从而有助于保持文件/文件夹的整洁。certbot certonly --noninteractive --agree-tos --cert-name ${SITE_TLD} -d ${SITE_DOMAIN_ONE} -d ${SITE_DOMAIN_TWO} -m ${SSL_EMAIL} --webroot -w /var/www/html/
- Dr Deo--agree-tos
和-m
选项进行单独调用,以便摆脱它,然后随后就不需要它了。但事实并非如此。在另一台主机上,我从来不需要使用它,而且那是很久以前的事情,我已经不记得我当时做了什么了。 - Michael
--non-interactive
并不是万无一失的,如果缺少三个必要的标志,则证书仍将无法生成(有关更多信息,请参见我的答案)。 - Jesse Nickles--apache
或--nginx
,或者任何你正在使用的服务器。顺便说一下,我觉得“还包括--domains
”的注释不够清楚,对我来说不太明确,需要在其后面指定服务器名称。这是我的完整命令格式,可以正常运行(需要root权限):certbot --nginx --non-interactive --agree-tos --domains example.com --email webmaster@example.com
。 - DHW--non-interactive
still working, however,-d
arg is not working anymore, it could--domains mydomain.com
- Marc Guillem