2015年12月8日 星期二

建立HTTPS (SSL) 網站的方法


1. 自我簽發憑證 

此法相對於付費的憑證(VersignThawte等授權機構簽發,台灣代理商一年大約二、三萬台幣),沒有經過公正第三方的認證,不過如果是給「自已人」或者是一般「相信你的網站」的網友,基本上是夠用的。不過「自我簽發憑證」的HTTPS網站,在進入時候,瀏覽器基本上都會有:「您即將進入非安全性的網站,您確定嗎?」之類的提示。點選「是」或「我要進入」就可了。 

1a 找到 Apache 內建的憑證產生器:certificate.sh 


一般而言,路徑是在:cd /usr/share/doc/packages/apache2/ 

先修改裡面的最後一個字 test,改為 custom。修改後內容為: 

#!/bin/sh 

./mkcert.sh make --no-print-directory /usr/bin/openssl /usr/sbin/ custom 


1b 執行憑證產生器:Shell> ./certificate.sh 


執行後會開始一連串(九個步驟)的互動產生模式。以下簡要提示需要輸入的資訊。 

STEP 0Signature Algorithm 選「R」或直接按 Enter(RSA加密支持度比較高) 


STEP 1:產生 Private Key (ca.key)。不需輸入資訊。 


STEP 2:建立憑證簽發請求 (ca.csr)。需輸入以下資訊: 

  Country Name: TW 
  State or Province Name: Taiwan (或「.) 
  Locality Name: Taipei 
  Organization Name: 填入您所屬的組織,例如 National Taiwan Univerisy 
  Organization Unit Name: 填入您在組織中所屬的單位,例如 Department of Eletronic Engineering 
  Common Name: 可以輸入您的組識名稱或網站名稱,例如 www.yoursite.com 
  Email Address: 簽發憑證擁有人的電子郵件(在這裡是我們自己) 

STEP 3:選擇X.509憑證 (ca.crt) 的版本,預設值是第三版。此處按 Enter 即可。 


STEP 4:對HTTP伺服器產生 RSA Private Key (server.key)。不需輸入資訊。 


STEP 5:對HTTP伺服器建立X.509憑證簽發請求 (server.csr)。需輸入的資訊和 STEP 2 相似,除了 Common Name 的地方注意要輸入網站URL,例如 www.yoursite.com 


STEP 6:選擇對 Server X.509憑證 (server.crt) 的版本,預設值是第三版。此處按 Enter 即可。 


STEP 7:選擇是否對 CA憑證的 Private Key 加密。如果選擇加密需設定密碼。住後開啟或重啟 Apache Server 皆需輸入此密碼。 


STEP 8:選擇是否對 Server憑證的 Private Key 加密。與上步相同,如果選擇加密需設定密碼。住後開啟或重啟 Apache Server 皆需輸入此密碼。 


經過此九個步驟,憑證的產生就大功告成了。另需注意,此 Script (certificate.sh) 產生的憑證有效期限為一年,過了一年後需重新簽發。 


2. 修改 Apache Server 相關設定 


底下這個類似 Tutorial 的文章寫得非常好,尤其是用 SUSE 的朋友特別適合(其他的版本大致上只是路徑不同) 

http://jamesrome.home.comcast.net/~jamesrome/Apache/SSL_in_Apache_2.html 

(寫得有點累了,先放這篇文章作為設定的介紹) 


如果有什麼問題,歡迎提問啊! 



另外,如果要將 HTTPS 網站提升安全性,提升為 Strong Encryption 的網站( SSLv2-onlystrong encrypttion only等網站設定) 
請參見寫得很詳細、清楚的官方網頁: 

SSL/TLS Strong Encryption: How-To (Apache 2.2 Documentation)