Ssl

來自 ssl 子域的 Apache 重定向不起作用

  • January 1, 2018

我正在嘗試將所有流量重定向到 https 並將所有子域重定向到主域並且無法正確處理。我正在使用帶有最新 apache2 的 Ubuntu 14.04。

我為埠 80 設置了虛擬主機,以將所有流量重定向到 https:

<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>

並設置 ssl virtualhost 將所有子域重定向到主域:

   <IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias *.example.com
    DocumentRoot /var/www/example.com/public_html/
    ErrorLog /var/www/example.com/logs/error.log
    CustomLog /var/www/example.com/logs/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
Include /etc/letsencrypt/options-ssl-apache.conf
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com-0001/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com-0001/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/example.com-0001/chain.pem

Redirect permanent / https://example.com

</VirtualHost>

</IfModule>

結果如下:

工作http://example.com>到<https://example.com

工作http://anything.example.com>到<https://example.com

不工作https://anything.example.com>到<https://example.com

問題是:我如何將 ssl 子域重定向到主域?

請告訴我我做錯了什麼。

非常感謝。

鑑於Let’s Encrypt 似乎只會在 2018 年 1 月開始頒發萬用字元證書,並且您的伺服器設置較早,因此您似乎沒有使用萬用字元 SSL 證書。

為了連接https,甚至重定向或處理您的“別名”,您必須擁有客戶端發送的任何域的有效 SSL 證書。

SSL 握手發生在處理 Apache 伺服器中的*任何內容之前。*換句話說,如果您沒有使用萬用字元 SSL 證書,則 SSL 握手將在 Apache 配置文件有機會處理別名https://anything.example.com 之前失敗。

無論其他問題可能是什麼,都必須在進行任何進一步診斷之前進行糾正,如果需要的話。例如,如果期望的行為是https://anything.example.com“重定向”給http://example.com您可能必須使用mod_rewrite條件匹配,因為該RedirectMatch指令僅與 URL-path 匹配,並且使用ServerAlias將創建必要的匹配來處理初始查詢,但不會嘗試將查詢“重寫”或“重定向”到另一個所需的 URL。

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