在运行Lighttpd的Linux系统上,如何为Let的加密证书自动更新证书。让我们的加密为Apache 2和NGINX提供了很好的脚本,但不提供Lighttpd,这对于像Raspberry Pi或旧盒子这样的小型系统来说更加舒适。
答案 0 :(得分:2)
Danny Tuppeny提供了一个很好的开始,你可以在他的博客Installing Lighttpd, PHP 7 and LetsEncrypt on a Raspberry Pi (Raspbian Jessie Lite)上运行一个简单的脚本
# Renew cert
# updated for name change [mscalora]
letsencrypt-auto renew
# Rebuild the cert
pushd /etc/letsencrypt/live/<your-domain-here>/
cat privkey.pem cert.pem > combined.pem
popd
# Reload
/etc/init.d/lighttpd force-reload
基于最新的Let's Encrypt脚本包的更通用的版本可以在我的Gist:letsencrypt-update-lighttpd中找到。该脚本将使用证书处理多个域。
Danny Tuppeny的博文也有关于原始设置的信息。
答案 1 :(得分:1)
有一个适用于任何网络服务器的通用 standalone 验证器(插件)。但是,如果您的服务器处理端口 80 上的请求,您将面临一个问题,即 certbots 说“此插件需要绑定到端口 80 才能执行域验证,因此您可能需要停止现有的网络服务器。”< /em> 因此,如果您必须为网络服务器更新证书,它会在域验证期间停机。 如果您不关心此类停机时间,请按原样使用独立插件。
但是,有一个解决方案可以帮助您避免停机:
使用参数运行 certbot:--standalone --http-01-port 123456 - 插件的网络服务器将在端口 12346 而不是 80 上启动,因此您无需停止网络服务器.
设置并运行一个非常轻量级的中间反向代理,例如 Tinyproxy:
yum -y install tinyproxy --enablerepo='epel';
配置它监听12345端口。它的配置可以是这样的:
User tinyproxy
Group tinyproxy
Port 12345
Timeout 6000
MaxClients 100
MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0
BindSame yes
DisableViaHeader Yes
ConnectPort 80
ConnectPort 12346
AddHeader "X-Forwarded-Proto" "http"
ReversePath "/" "http://127.0.0.1/"
ReversePath "/.well-known/acme-challenge/" "http://127.0.0.1:12346/.well-known/acme-challenge/"
ReverseOnly Yes
ReverseMagic Yes
它应该侦听 HTTP 流量并在两个网络服务器之间重定向请求。代理过滤流量并将包含“/.well-known/acme-challenge/”的 Let's Ecnrypt 验证请求重定向到插件的网络服务器到端口 12346,并将常规 HTTP 请求重定向到您的网络服务器到端口 80。
iptables -I 输入 -p tcp -m tcp --dport 12346 -j 接受 iptables -I 输入 -p tcp -m tcp --dport 12345 -j 接受 iptables -t nat -I PREROUTING -p tcp -m tcp ! -s 127.0.0.1/32 --dport 80 -j 重定向 --to-ports 12345
这就是您获得自动 Let's Encrypt 证书续订的全部内容,无需停机,也无需更改您的网络服务器内容。
您可以下载实现解决方案的脚本 generate-ssl-cert.sh 并根据您的需要采用它。实际上,此脚本是称为 Let's Encrypt SSL Add-On 的自动化包的一部分。该包是一个 Cloud Scripting 方案。