在尝试了letsENCRYPT客户端之后,我发现了一种自动生成和续订证书的好方法。我在这里使用的是nginx,但任何网络服务器都可以工作。这种方法不涉及任何letsENCRYPT命令的代理,也不涉及自动修改nginx配置,因此非常安全。
必备条件:letsEncrypt CLI工具
此方法允许您使用1个命令生成和续订let加密证书。如建议的那样,这很容易实现每60天续订一次。
您需要在您需要证书的所有域上的端口80上使用nginx进行应答。然后,您需要在/.well-now/acme-challengl上处理letsEncrypt使用的挑战。
然后,我们调用letsENCRYPT命令,告诉工具将质询文件写入我们在nginx配置中用作根目录的目录中。
我重定向HTTPS上的所有HTTP请求,因此我的nginx配置如下所示:
服务器{
听80;
听[::]:80;
SERVER_NAME Example.net Example.org;
位置‘/.知名/ACEME-挑战’{
DEFAULT_TYPE“文本/普通”;
根目录/tMP/letsEncrypt-AUTO;
}
位置/{
}
}
如果我添加一个新域并使用SERVER_NAME*;,我创建一个具有所需主机名的新证书,并且仅使用新生成的证书为监听443的该域添加新的vhost,则此批准允许我不再需要进行任何nginx配置更改。
然后,要为这些域生成初始证书:
$EXPORT DOMAINES=“-d Example.net-d Example.org”
$EXPORT DIR=/tMP/letsEncrypt-AUTO
$SERVICE NGINX重新加载
该命令将输出签名证书的路径,您可以像往常一样将其添加到您的nginx配置中。私钥位于与生成的fullchain.pem相同的目录中
A LET加密证书的有效期为90天,建议每60天续费一次。这里需要自动化以避免任何过期的证书!
要续订证书(例如,在cron作业中),请使用--renewarg调用相同的命令:
$EXPORT DOMAINES=“-d Example.net-d Example.org”
$EXPORT DIR=/tMP/letsEncrypt-AUTO
$SERVICE NGINX重新加载
Renchap:
您还可以通过再次使用相同的命令来获得一个重复的证书,其中带有一个--Duplate arg。
不太熟悉重复标志,在什么情况下需要重复证书?如果使用通过LSSLHTTPS?提供的多个本地平衡Web服务器,则复制允许您使用不同的私钥,并能够在需要时撤销此特定密钥。
一种常见的用例是向管理您的一个域(子域通常带有通配符)的外部方/服务器提供副本,或者如果您需要在不同的硬件中使用您的证书,并且希望在其被破坏时只能撤销其中的一个。NICE不知道您可以使用letsEncrypt客户端来实现这一点,所以您复制了用于CDN HTTPS自定义SSL使用的SSL证书
哦,复制会将符号链接重写到活动的域SSL吗?或者它得到自己的符号链接单独的文件?是的,这将是一个有效的用例。因此,如果CDN证书被攻破,您可以吊销它们,而不是您用于此域的其他证书。
副本创建了一个全新的证书,例如命名为“Example.net-0001”而不是Example.net,谢谢@renchap澄清,Renaud,您提到我们需要安装CLI工具。这是你克隆GitHub回购时得到的结果吗?
LetsENCRYPT-AUTO??,我使用的是FreeBSD,所以我只需要运行pkg installpy27-letsENCRYPT
服务器{
监听443 SSL1;
根目录/var/www/您的路径;
Index index.php index.html index.htm;
#使站点可从http://localhost/访问
服务器名称您的域名www.youdomain.com;
#如果您使用的是HHVM,则应包含您的标准php配置或其他配置
包括hhvm.conf;
位置/{
Try_files$uri$uri//index.php$is_args$args;
}
SSLON;
Ssl_证书/etc/letsencrypt/live/yourdomain.com/cert.pem;
Ssl_证书_密钥/etc/letsencrypt/live/yourdomain.com/privkey.pem;
启用了SSL_STAPPING;
SSL_STAPPING_VERIFY ON;
Ssl_Trusted_证书/etc/letsencrypt/live/yourdomain.com/fullchain.pem;
SSLSession_TIMEOUT 5M;
最重要的是,我在我的cronTab中添加了以下内容:
*3 2 1-12*bash-L-c“mkdir-p/tMP/letsENCRYPT-AUTO&/ROOT/letsENCRYPT/letsENCRYPT-AUTO CENTALLY-d MAINDOMAIN-d SUBDOMAIN-1-d SUBDOMAIN-2--ACCOVE-TOS--默认续订--a webroot--webroot-Path=\”/tMP/letsENCRYPT-AUTO\“&SERVICE NGINX RELOAD”
所以它每个月更新一次,每个月的第二天,两点,我建议看看这个剧本。
与以下crontab项结合使用:
30 2**1/usr/local/sbin/le-renew-webroot>>/var/log/le-renewal.log
来源:DigitalOcean让我们加密文章,我有一个为mydomain.com和www.mydomain.com设置的nginx的lets加密证书,我想将该证书用于static.mydomain.com。续订时,是否可以添加首次设置证书时尚未指定的“静态”子域。如果不是,那么如何进行呢?谢谢,@iyedb,您使用webroot认证获取证书了吗?
如果您运行certbot certonly--force-renew-d mydomain.com-d www.mydomain.com-d static.mydomain.com,它应该执行续订,用一个新的证书替换现有的证书,该证书也包括static.mydomain.com的覆盖范围(尽管我不确定您是否需要用-w显式指定新域的webroot)。,@Schoen Thank you。我使用的命令是:./letsENCRYPT-AUTO CERTONLY-a webroot--webroot-path=/usr/share/nginx/html-d Example.com-d www.Example.com。
所以这就是:
Certbot certonly--force-renew--webroot-w/var/www/Example-d Example.com-d www.Example.com-w/var/www/Static-d static.example.com应该可以做到这一点。太棒了!为了将来参考,这个方法很管用。续订证书使用不同的Webroot.添加新的子域,我很高兴它为您正常工作,并感谢您在这里记录您的经历。