原本是在看防火牆架設,但後來覺得若把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