Centos

如何使用 Let’s Encrypt 和動態配置的海量虛擬主機

  • January 17, 2018

我有一個伺服器配置為使用 Apache 2.4 動態配置的虛擬主機。我為某些域配置了 SSL,但我被要求使用 Let’s Encrypt 免費服務為所有域提供 SSL。

Certbot對我來說有點不清楚,因為我不確定它是否適用於動態虛擬主機。

我的挑戰是我在子域 subXXX.masterdomain.com 和別名 yourchoicedomain.com 上都有可用的每個域,所以我需要生成一個有效的證書表格 Let’s Encrypt

我沒有非常複雜的 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

引用自:https://serverfault.com/questions/799784