Apache使用SSL Model(https)

原本是在看防火牆架設,但後來覺得若把server放到做前面當防火牆以及DHCP server,那就還需要架設NAT,但是若牽扯到NAT,防火牆會很難寫(至少已經超過我的能力啦! :y014 ),所以就放棄了。

剛好又想到除了防火牆之外,那一般資料傳輸呢?所以就開始找如何把https使用在server上面。找了一下資料,發現很簡單,但是若要通過第三方認證,則需要錢。我事業沒那麼大,連進來的幾乎都是認識的,自己搞個憑證就好,雖然沒第三方認證,但是至少傳輸有加密效果,這就達到目的了!

很簡單

1.安裝openssl、ssl-cert。

 sudo apt-get install openssl ssl-cert 

2.開啟apache內的ssl模組。

 sudo a2enmod ssl 

3.建立放憑證的資料夾。

 sudo mkdir /etc/apache2/ssl 

4.建立憑證。x509應該是編碼方式,365是有效天數。

 sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key 

然後需要填一些資料,可以不用都寫。

憑證
憑證

5.修改虛擬主機設定。

到/etc/apache2/sites-available,把需要使用https的虛擬主機,將port 80改為port 443,並加入下面三段。

 SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem SSLCertificateKeyFile /etc/apache2/ssl/apache.key 

若同時要保留80以及443,那就是將原本port 80的設定copy下來後,複製到後面,在將後面的改為443。

6.重新啟動apache2

 sudo service apache2 restart 

這樣就大功告成了。

2015/8/31更新 更新步驟3之後的操作模式(OS:Debian 8)

先產生.key

 openssl genrsa -out gffamily.net.key 2048 

2048表示使用2048-bit key加密,數值越高表示安全性越高,但相對系統反應速度就降低。 接下來,產生.csr

 openssl req -new -key gffamily.net.key -out gffamily.net.csr 

因為沒有花錢去得到第三方公正的保障,因此只能自己認證產生.crt,並將有效期改為10年。

 openssl x509 -req -days 3650 -in gffamily.net.csr -signkey gffamily.net.key -out gffamily.net.crt 

之後,將檔案放到正確地方。
gffamily.net.crt -> /etc/ssl/certs
gffamily.net.key -> /etc/ssl/private
gffamily.net.csr -> /etc/ssl/private

接著修改/etc/apache2/sites-available/default-ssl.conf

 SSLCertificateFile /etc/ssl/certs/gffamily.net.crt SSLCertificateKeyFile /etc/ssl/private/gffamily.net.key 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料