2014年4月11日 星期五

Apache2+SSL連線功能


家裡架了個LAMP之後,記帳系統是處在區網內。
資料傳遞不加密其實還好,所以SSL的部分也一直沒有去研究。
一直到最近爆發了OpenSSL的Heartbleed漏洞[註]
讀過一些新聞後,開始想了解如何設定

就趁著工作中一點小空檔來學習一下

[註]詳細的問題解說可以看這一篇:為何 OpenSSL Heartbleed 是嚴重又危急的漏洞?


SSL的詳細認證技術就不解說了
只說明一下與產生認證用檔案相關的部分
首先,SSL是一種金字塔型的認證
它會有最高等級的認證中心,
再下放認證到底下的中繼認證中心
最後才是受認證的各網頁

圖片來源:http://www.study-area.org/tips/certs/certs.html

所以SSL正常使用是要花錢的
要申請各認證中心核發的認證
才能確保此憑證是正常的
但私人使用時不用這麼麻煩
可以自行產生最高等級的憑證然後一路簽下來
問題就在於怎麼設定?

拜網路上很多熱心人士的教學文章,與Google強大的搜索力,找到不少資料
只是沒想到中間卡很大,不是SSL憑證產生,而是Apache2的設定
以下是統整後的詳細設定:
個人的系統是Ubuntu 12.04 LTS+Webmin
就以這樣的系統來介紹

先來產生SSL的憑證吧
其實照著SSL Certificate-自行產生 SSL 憑證來做
一直到Apache設定前,就可以萬無一失
不過我自己還是套用一下自己的設定
以求符合自己的需求

前面的設定都照著來,產生文件的地方是在/etc/ssl下
所以我的指令都會加上sudo來取得root的權限
不同的地方是從製作伺服器用的憑證開始
先產生自己的Key
sudo openssl genrsa -out darkdragon.key 2048
產生自己的憑證申請書
sudo openssl req -new -key darkdragon.key -out darkdragon.req 
輸入的資料在這一行:Common Name (eg, YOUR name) []:,請特別注意
要輸入伺服器的名稱(Host Name),也就是打的名稱可以連上伺服器
像我是用ubuntuserver,在區網打http://ubuntuserver就連得到網頁
原教學是用www.weithenn.org
最後簽發憑證的指令是一樣的
只是要把weithenn.org的檔名,換成自己要的darkdraon.crt

SSL檔案產生完成後,就是要開啟Apache2的SSL連線功能
老實說,我很廢,到現在還試不出來不使用webmin的正規方法
至於用webmin很簡單,先進伺服器區,開啟Apache2的管理頁面
點選Global Configuration後,再點入Configure Apache Modules
進入下一頁

最後,我們要點選ssl後,再按下Enable Selected Modules.
Apache2的SSL連線功能就啟用了。

至於設定
我們先開啟一個新的虛擬網站
然後目錄指定到新的位置如/var/www2去
接著點進去SSL的選項中做如下的設定
儲存後,重開Apache2的服務,或按下套用變更
輸入https://ubuntuserver,可以得到下面的畫面

如果再點進去,就會顯示所放的網頁
同時左上角可以顯示目前加密的狀況



沒有留言: