Centos
如何使用 Let’s Encrypt 和動態配置的海量虛擬主機
我有一個伺服器配置為使用 Apache 2.4 動態配置的虛擬主機。我為某些域配置了 SSL,但我被要求使用 Let’s Encrypt 免費服務為所有域提供 SSL。
Certbot對我來說有點不清楚,因為我不確定它是否適用於動態虛擬主機。
我的挑戰是我在子域 subXXX.masterdomain.com 和別名 yourchoicedomain.com 上都有可用的每個域,所以我需要生成一個有效的證書表格 Let’s Encrypt
- subXXX.masterdomain.com
- www.subXXX.masterdomain.com
- yourchoicedomain.com
- www.yourchoicedomain.com
我沒有非常複雜的 vhosts 配置文件,我使用符號連結實現域別名和 www 伺服器別名。
<VirtualHost *:80> #ServerName masterdomain.me #ServerAlias * # get the server name from the Host: header UseCanonicalName Off # include the server name in the filenames used to satisfy requests VirtualDocumentRoot "/var/www/vhosts/%0/httpdocs" RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTPS} off RewriteRule .* http://www.%{HTTP_HOST}$0 [R=301,L] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTPS} on RewriteRule .* https://www.%{HTTP_HOST}$0 [R=301,L] <Directory "/var/www/vhosts/*/httpdocs"> AllowOverride "All" Options SymLinksIfOwnerMatch Require all granted Order allow,deny Allow from all </Directory> </VirtualHost>
任何讓我開始的幫助都會很棒。
由於 certbot 無法從您的 Apache 配置中確定活動域名,您需要解決這個問題。
由於
mod vhost alias
子目錄的存在是“啟動”域名的原因,我建議使用一個簡單的 shell 腳本來列舉所有子目錄(=所有活動域),然後執行 certbot 並--webroot
選擇創建類似於以下內容的內容:certbot certonly --webroot -w var/www/vhosts/www.example.com/httpdocs -d www.example.com -d example.com -w var/www/vhosts/www.example.net/httpdocs -d www.example.net -d other.example.net