2015-08-21 77 views
3

我主持一個Apache服務器上幾個單獨的網站:如何重定向HTTPS請求HTTP無證書(Apache的VirtualHosts)

site.com example.com

site.com所有重定向用戶從應用程序內部轉到HTTPS。

example.com是一個非HTTPS網站和HTTPS請求會重定向到HTTP

爲了意外請求https://example.com而不是http://example.com拿不到site.com(由於只有一個HTTPS虛擬主機使用,要成爲默認站點)我需要爲example.com設置https虛擬主機,但我必須使用自簽名證書,因爲沒有理由使用SSL。

這意味着當有人訪問https://example.com因爲他們單擊繼續他們重定向到HTTP

有什麼辦法來重定向HTTPS請求HTTP沒有他們獲得了瀏覽器警告頁面,該SSL是自簽名,然後儘快證書

這是當前虛擬主機:

<VirtualHost *:443> 
     ServerName about.example.com:443 
     DocumentRoot "/webdata" 
     <Directory "/webdata"> 
       AllowOverride All 
       Require all granted 
     </Directory> 

     RewriteEngine On 
     RewriteCond %{HTTPS} on 
     RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} 

     SSLEngine on 
     SSLProtocol all -SSLv2 
     SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 
     SSLCertificateFile /etc/httpd/ssl/ExampleCOM.crt 
     SSLCertificateKeyFile /etc/httpd/ssl/AboutExampleCOM.key 
     BrowserMatch "MSIE [2-5]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 

</VirtualHost> 

回答

6

從根本上說,這是一個問題。在通過HTTPS進行通信時,TLS通信層在交換任何內容之前設置,即關於證書的警告發生在有關該網站的任何信息被傳輸之前。所以需要一個證書來允許瀏覽器在HTTPS定義,自簽名或無簽名時連接。

理想的情況下,和「最佳實踐」,我們真的應該鼓勵人們使用HTTPS作爲默認的(我意識到這是一個費用,可惱人使用證書,並同時不應該有什麼不對的自簽名證書,經常有問題和瀏覽器消息等)。

即使你有一個應用程序服務器,「只能做HTTP」,最好的做法通常是前與一個Web服務器(如nginx的或lighthttpd或某種形式的負載均衡器)應用程序服務器,也將提供你的https終止。 - 這是您似乎已經完成您的httprewrite將請求轉發到您的網站。

您可能會發現一些便宜的SSL證書提供程序,它們在大多數瀏覽器中安裝?

+1

感謝您的回答 – AirCombat

+0

LetsEncrypt是獲取SSL/TLS證書的免費服務:https://letsencrypt.org/ –

4

簡短的回答。沒有不是一種方法來做到這一點。

到https的連接發生在之前發生任何類型的重定向。你唯一能做的就是買一個證書。這些日常的域名證書是非常便宜的。

您可以獲得有效的域名證書$ 4.99 /年。然後執行重定向,以便涵蓋https和http。

或者您可以關閉您的443虛擬主機,但用戶將得到一個404或連接錯誤頁面。如果他們嘗試https。

這些是你的選擇。只要它是自簽名的,您的用戶將始終獲得警告頁面

+1

感謝您的回答 – AirCombat

+0

目前,您可以從以色列的CA免費獲得證書。 –

相關問題