電子商務除了「機密性」、「完整性」和「不可否認性」的要求外,其中還有一件最重要的事,即是證明身分。以至銀行開戶為例,在現實生活中,銀行通常會要求出示身分證及健保卡等證件來證明身分。
同樣地,在網路世界中,數位憑證(Certificate)即是像現實生活中的身分證一樣,可用來證明身分。而公共金鑰基礎建設(Public Key Infrastructure,PKI)即為維護建置數位憑證的機制(有點像是現實生活中的戶政單位)。PKI的架構如下圖示:
|
▲PKI的架構。 |
其中,RA(Registration Authority)註冊中心的作用是,使用者向註冊中心提出申請憑證的要求,註冊中心在確認使用者的真實身分後,向憑證管理中心(Certificate Authority,CA)提出要申請數位憑證的要求。而CA憑證管理中心負責產生並管理憑證產理、註銷等相關事項。在PKI架構中,所有公鑰都被集中保管於公正第三人,也就是憑證機構(CA)手中,任何須要驗證的人都可向CA查詢交易相對人的公鑰。
建立具有SSL認證功能的網站伺服器
接著,將以下列步驟來建立具有SSL認證功能的網站伺服器:
1. 建立所使用私密金鑰(Private Key)和憑證申請檔(Certificate Signing Request)。
2. 將憑證申請檔(Certificate Signing Request)送給公開CA申請憑證,但在本解決方案中,將自行建立憑證。
3. 載入所核發的憑證。
4. 編譯安裝具有mod_ssl模組的Apache網站伺服器。
5. 設定只能以https來連接網站。
建立SSL所需的相關憑證
在實作具有SSL支援的網站伺服器前,必須先建立SSL所需的相關憑證,在此利用OpenSSL來建立自行簽署的憑證。這裡要特別提醒的是,由於憑證為自行簽署而非使用公正的認證機關簽署,所以一旦使用瀏覽器連接時,將會出現「此網站為不被信任的網站」的訊息。
請先行確認系統是否有OpenSSL套件,如果系統未支援OpenSSL,可利用指令「」來安裝OpenSSL軟體。憑證產生流程如下圖示。在本解決方案中,相關的憑證檔案會被存放在「/root/key」目錄下。
|
▲憑證產生流程。 |
產生一個私人金鑰,利用openssl來產生,執行如下的指令:
(產生一個長度為1,024位元,檔名為private.key的私人金鑰)
執行如下指令,利用私人金鑰產生一個憑證要求(Certificate Signing Request):
(產生一個檔名為server.csr的憑證要求,在產生的過程中會詢問國家等相關資訊,使用預設規則即可)
自行產生相關憑證。
(利用私人金鑰「private.key」及憑證要求「server.csr」產生一個有效期限為365天且符合x509規格的憑證,檔名為server.crt)
至此,在「/root/key」目錄下應會產生所需的認證檔案。
編譯安裝具有SSL功能的網站伺服器
繼續安裝支援SSL功能的網站伺服器,連接至「http://httpd.apache.org/」取得Apache原始碼安裝(筆者所安裝的版本為2.2.17)。解壓縮後,執行指令「./」,設定支援SSL功能,並且將相關程式安裝在「/usr/local/apache2/」目錄。然後執行指令「」編譯Apache,以及使用指令「」將相關程式安裝在「/usr/local/apache2/」目錄下。
安裝完成後,可利用指令」檢查是否有mod_ssl,若有相關字眼,即代表Apache已支援SSL。
成功安裝Apache伺服器後,即可繼續設定Apache的組態檔(httpd.conf)。在本文中不多加探討httpd.conf的用法,讀者僅須將該檔中的「#Include conf/extra/httpd-ssl.conf」改成「Include /conf/extra/httpd-ssl.conf」(相關的SSL組態值的設定檔)即可。接下來繼續說明httpd-ssl.conf,在httpd-ssl.conf內設定如下的組態:
設定完成後,利用指令」啟動Apache,接著利用https的連接方式連接,即可利用SSL加密往來的HTTP封包。但由於所使用的憑證為自行產生,並未經過公正的憑證機關簽署,所以在連接網站時,會出現下列的警告訊息,可不予理會,直接點選「繼續瀏覽此網站」即可。當然,如果網站是實際運作的商務網站,還是建議去申請一個憑證。
|
▲點選「繼續瀏覽此網站」連結。 |
至此,一個支援SSL的網站伺服器已完成。