我正在尝试从头开始在 lighttpd 上设置letsencrypt。我目前在 16.10 xenial 上运行 lighttpd,并希望将现有站点从 http 转移到 https。我知道 Apache 和 ngnix 有一个自动设置过程,但我不愿意把东西移过来。我有六个主机名,在一对使用虚拟主机托管的域上,每个主机都有单独的块。
我该怎么做?
我正在尝试从头开始在 lighttpd 上设置letsencrypt。我目前在 16.10 xenial 上运行 lighttpd,并希望将现有站点从 http 转移到 https。我知道 Apache 和 ngnix 有一个自动设置过程,但我不愿意把东西移过来。我有六个主机名,在一对使用虚拟主机托管的域上,每个主机都有单独的块。
我该怎么做?
它需要一些试验和错误,并将来自多个来源的位放在一起。
您可能希望根据自己的需要做一些不同的事情。在这种情况下,我没有做一些人们包括在内的事情,还有一些事情是可选的。
我从这个指南开始,然后大相径庭
如果您想生成自己的 ssl.dh 文件,请立即执行。它是可选的,需要一段时间
cd /etc/ssl/certs
然后
openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
很慢,有点多余openssl dhparam -dsaparam -out etc/ssl/certs/dhparam.pem
,但速度要快得多接下来,按照说明安装letsencrypt的certbot
生成您的证书。我选择在一个证书上为“example.com”域中的所有主机拥有一个证书,并在其自己的证书上拥有“example.org”。
certbot 使用您的 Web 服务器端口,因此请先关闭您的 lighttpd 实例
生成证书只是运行的问题
certbot certonly --standalone -d example.org
对于一个域和certbot certonly --standalone -d example.com -d chat.example.com
证书中的多个域(最多 20 个)。lighttpd 需要一个单独的 pem 文件,而letsencrypt 做了一对(最初!)所以,你需要合并它们。进入
cd /etc/letsencrypt/live/
每个文件夹并运行cat privkey.pem cert.pem > ssl.pem
出于我们的目的,假设您在“/etc/letsencrypt/live/chat.example.com/”和“/etc/letsencrypt/live/example.org/”中有文件
出于测试目的,假设您需要这些证书之一作为默认值,并且您希望保持端口 80 可用于测试,以查看服务器是否以您的更改启动。
添加块读取
您可以稍后替换它,这是最低限度的,让您可以在 http 旁边运行 https。
任何没有明确设置连接到 https 的主机都将使用这些证书。它是一个最小可行的测试集。
启动 lighttpd 并进行测试。
现在,如果您是认真的,您可能需要更多设置,例如使用我们讨论过的 ssl.dh 设置,并且您在开始时花了两个小时生成 dhparam.pem 文件。您可以将刚刚添加的块替换为像这样的东西 - 这充当整个服务器的默认设置。
它使用更完整的设置(根据口味调整)执行 HTTPS,并将任何 HTTP 连接重定向到 HTTPS。
如果您想要一个具有不同密钥集的域,您可以在主机块中覆盖这些设置。
重新启动你的服务器,测试以确保端口 80 不可连接,并且 https 是,你应该很好。
大多数工具都支持“哑网络服务器”模式,在这种模式下,它们提供需要由您的网络服务器在
/.well-known/acme-challenge/
目录中提供服务的文件。也可以使用某种动态语言(lua、php、...:连接请求文件名
'.'
和公钥哈希)生成该内容