本文將採用開源碼OpenSSL套件來實作一個安全的SSL網站,以便簽發符合資安政策的數位憑證,並說明如何透過Let's Encrypt服務來取得免費且合法的數位憑證。
X.509簡介
X.509最早起始於1998年,由國際電信聯盟(ITU-T)制定的一種數位憑證標準,如圖9所示,其架構分為三層。
|
▲圖9 X.509架構示意圖。 |
由上述之授權中心負責憑證的簽發與驗證。基本上,目前的瀏覽器均會內建主要的憑證授權中心(CA),圖10所示為Chrome瀏覽器所內建憑證管理中心的資訊,一旦使用者需要相關驗證時(如HTTPS連線),就會利用所內建的憑證授權中心來驗證金鑰是否經過簽署。
|
▲圖10 Chrome瀏覽器內建的憑證管理中心。 |
X.509憑證內容主要是說明簽章演算法、有效日期、簽署的CA等等資訊,常用欄位如圖11所示。
|
▲圖11 X.509憑證常用欄位。 |
介紹過數位憑證相關的背景知識後,最後將以OpenSSL程式庫為例來實際簽發符合目前主流瀏覽器安全規範的數位憑證。
安裝自行簽發數位憑證的SSL網站
如果要為自己的伺服器申請一張數位憑證,在實際的運作中必須經下列步驟:
1. 申請者必須先產生私鑰。
2. 向RA申請。在審核相關資訊,確認身分後,就
會產生憑證需求檔(C.S.R)並向CA請求簽發數位憑證。
3. CA在驗證過後即簽發數位憑證,並將相關資訊送
往DS管理。
在本文中將以自行簽發的方式來取得數位憑證,因此執行如下指令(其中#部分為註解):
在產生數位憑證後,基本上只要更改httpd-ssl.conf即可,須更改下列選項,亦即指定憑證與金鑰的位置,然後重新啟動Apache即可:
使用自行簽署的數位憑證,並未經過公正的第三方單位驗證,所以瀏覽器在瀏覽此類SSL網站時,將會觸發警告訊息,如果要避免此類訊息,可利用Let's Encrypt套件來免費取得有效的數位憑證。
安裝Let's Encrypt
Let's Encrypt是一個由ISRG(Internet Security Research Group)組織所維護管理的數位認證機構,其主要目的在於為網站伺服器提供免費的數位憑證。目前的政策是所簽發的證書一次有效期為3個月(可使用延期的方式持續使用)。
|
▲圖12 安裝Let’s Encrypt。 |
Let's Encrypt安裝方式如圖12所示,首先執行「git clone https://github.com/letsencrypt/letsencrypt」命令取得套件。接著,使用「letsencrypt-auto」命令來更新letsencrypt相關套件。然後以「letsencrypt-auto certonly --webroot -w /usr/local/apache2/htdocs/ -d test.7995.tw」命令產生相關的數位憑證,相關參數說明如下:
webroot:使用webroot的方式作驗證,可不須停止目
前運作中的網站伺服器服務。
-w:設定網站根目錄的位置
-d:欲申請憑證的網域名稱
成功執行指令後,即產生如圖13所示的數位憑證。
|
▲圖13 產生數位憑證。 |
以同樣的設定方式設定httpd-ssl.conf,指定相關憑證的所在位置即可,設定內容如下:
重啟網站伺服器後,再以瀏覽器測試,就不會出現如自行簽署數位憑證的警告訊息。如果有興趣,可利用瀏覽器來查看數位憑證的內容,如圖14所示。
|
▲圖14 查看數位憑證的內容。 |
實作至此,一個完整SSL網站就建構完成了!
<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>