2014年1月3日 星期五

Virtual Host 設定 SSL

今天架了一台SERVER,主要是Apache的用途,但是設定虛擬主機
ttucis8.ttu.edu.tw -->走SSL 443 Port
stucis8.ttu.edu.tw-->走一般的80Port

按照書上的做法來做沒太大問題,但是一旦開啟ttucis8這個網站,就會發現預設的目錄無法開啟,
所以參照了以下的做來來解決...
資料出處:http://wiki.centos.org/zh-tw/HowTos/Https

在 CentOS 設置一個 SSL 加密的網頁伺服器

這個指引會解釋如何設置一個支援 https 的網站。這個教程使用一個自我簽署的金鑰,因此它適用於個人網站或作測試用途。這個指引並未經修訂,因此請自行承擔風險,並進行備份!

1. 取得所需的軟件

你需要為一台 SSL 加密的網頁伺服器預備數件東西。視乎你的安裝,你可能並未安裝 OpenSSL 或 mod_ssl,Apache 連接到 OpenSSL 的介面。如果你有需要,請用 yum 來安裝它們。
yum install mod_ssl openssl
yum 會告訴你它們已經安裝,或者為你安裝它們。

2. 產生一張自我簽署的憑證

我們將會利用 OpenSSL 來產生一張自我簽署的憑證。如果你在一台生產用的伺服器上做這個動作,你應該會想從一個被信賴的憑證機構取得一條金鑰,但假若你只是用在一個私人網站上或作測試之用,自我簽署的憑證已經足夠了。要建立金鑰,你必須是 root 用戶,因此你可使用 su 變為 root 用戶,或在指令前面運用 sudo
# 產生私鑰
openssl genrsa -out ca.key 1024 

# 產生 CSR
openssl req -new -key ca.key -out ca.csr












# 產生自我簽署的金鑰
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

# 複製檔案至正確位置
cp ca.crt /etc/pki/tls/certs
cp ca.key /etc/pki/tls/private/ca.key
cp ca.csr /etc/pki/tls/private/ca.csr
警告:如果你採用 SELinux,請確保你複製這些檔案而不是遷移它們。否則 Apache 將會投訴關於違漏了的憑證檔,因為它無法讀取這些擁有錯誤 SELinux 脈絡的憑證檔。
假如你遷移了這些檔案而不是複製它們,你可以用以下的指命來矯正這些檔案的 SELinux 脈絡,因為 /etc/pki/* 的正確脈絡定義已包含在 SELinux 政策裡。
restorecon -RvF /etc/pki
接著我們須要更新 Apache SSL 的設定檔
vi +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf
請修改路徑至金鑰檔案的儲存位置。如果你採用上面的方法,這會是
SSLCertificateFile /etc/pki/tls/certs/ca.crt
然後在再低數行的位置為憑證金鑰檔案設定正確路徑。如果你按照上面的指引,這會是:
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
儲存及離開檔案,然後重新啟動 Apache
/etc/init.d/httpd restart
假若一切正常的話,你現在應該可以透過 https 連線到你的伺服器,並看見 CentOS 的預設頁面。由於憑證是自我簽署的,瀏覽器一般會徵詢你是否接納這個憑證。Firefox 3 會阻止你連線,但你可以撤消這個決定。

3. 設置虛擬主機

一如你為 http 在連接埠 80 上設立 VirtualHost,你亦可為 https 在連接埠 443 上作樣似的設置。一個在連接埠 80 上的網站的典型 VirtualHost 有如下樣子

        
        AllowOverride All
        
        DocumentRoot /var/www/vhosts/yoursite.com/httpdocs
        ServerName yoursite.com

要在連接埠 443 上增加一個姊妹網站,你需要在你的檔案頂部加入下列內容
NameVirtualHost *:443
然後再加入一個類似如下的 VirtualHost 記錄:

        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/ca.crt
        SSLCertificateKeyFile /etc/pki/tls/private/ca.key
        
        AllowOverride All
        
        DocumentRoot /var/www/vhosts/yoursite.com/httpsdocs
        ServerName yoursite.com

利用這個指令重新啟動 Apache
/etc/init.d/httpd restart

4. 設置防火牆

你現在應該擁有一個以自我簽署憑證來支援 https 的網站。如果你未能連線,你或許需要在防火牆上打開連接埠。要這樣做,請更改你的 iptables 規則:
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/service iptables save
iptables -L -v

Translation of revision 6

沒有留言:

張貼留言