Ssl

HTTPS 僅在子域上

  • March 12, 2015

我在 安裝了 Jenkins ci.example.com,在 安裝了一個靜態站點example.com。Jenkins 安裝配置為僅使用 HTTPS。我是個吝嗇鬼,所以我只有一個ci.example.com域的證書。我的 Apache 配置如下所示:

<VirtualHost *:80>
   ServerName example.com
   DocumentRoot /var/www/html
   ErrorDocument 404 /404.html
</VirtualHost>

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

<VirtualHost *:443>
   ServerName https://ci.example.com
   ServerAlias ci
   SSLEngine on
   SSLCertificateKeyFile /etc/apache2/ssl/ci.example.com.key
   SSLCertificateFile /etc/apache2/ssl/ci.example.com.crt
   SSLCertificateChainFile /etc/apache2/ssl/ci.example.com.ca-bundle

   # Some proxy magic to make Jenkins work
</VirtualHost>

(實際上,這是一台 Ubuntu 機器,所以我只是提取了相關的站點配置文件並將它們連接起來;其他文件中還有很多其他幾乎不相關的配置內容)

當我導航到 時https://example.com,我收到一個證書錯誤,因為 Apache 在埠 443 上選擇了唯一可用的虛擬主機。是否可以給使用者一個看起來不那麼可怕的連接被拒絕錯誤?

這個答案說我不能在沒有證書的情況下從 HTTPS 重定向到 HTTP,這是有道理的,因為您需要在發送 3xx 之前建立 SSL 連接(帶有證書)。但我不想發送 3xx(或 4xx,就此而言)。我只想完全拒絕連接。有沒有辦法做到這一點?

使用您目前的設置:

不,您不能只拒絕連接……

也就是說,不拒絕與 ci.example.com vHost 的連接。

咬緊牙關,獲取額外主機名的證書,或獲取萬用字元證書,或使用 cloudlfare 等,或者當人們嘗試對您沒有證書的虛擬主機使用 HTTPS 時接受瀏覽器警告。

或者:

託管 ci.example.com。在與 example.com 不同的 IP 地址上。

在用於 example.com 的 IP 上,不要監聽 443。

這將導致您尋求的連接被拒絕。

(但是,它可能與您所說的小氣鬼身份不一致)

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