Ssl
HTTPS 僅在子域上
我在 安裝了 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。
這將導致您尋求的連接被拒絕。
(但是,它可能與您所說的小氣鬼身份不一致)