OpenSSL 開源碼 伺服器 SSL 資安 憑證 安全

用Let's Encrypt免費憑證 實作OpenSSL安全網站

2016-04-14
本文將採用開源碼OpenSSL套件來實作一個安全的SSL網站,以便簽發符合資安政策的數位憑證,並說明如何透過Let's Encrypt服務來取得免費且合法的數位憑證。
應用程式可以使用OpenSSL所提供的加解密函式進行安全通訊,避免相關資料被竊聽。一般來說,此套件可用在任何一種的網路服務,例如郵件伺服器、網站伺服器等等。而至今日,如果是使用開源碼的網站解決方案,其中的SSL安全網站伺服器絕大部分都是使用OpenSSL來實作完成。接著說明OpenSSL的使用(在此使用版本為1.0.1e),openssl語法如下:


其中,[標準命令]用來設定密碼演算法,產生相關的金鑰。[參數]的部分,則依各個標準命令的不同,而有不同的參數,通常是用來設定金鑰的一些常用屬性。接下來,就以OpenSSL來實作其工作流程。

對稱式密碼實作

首先說明對稱式密碼實作,以DES加解密演算法為例,如圖4所示。


▲圖4 對稱式密碼實作。

(1) 產生一個檔名為test.txt,內容為test的測試檔案。

(2) 針對此檔以des演算法加密,其中參數-e為encrypt 加密,-in則指定要加密的檔案,並將加密後的密文儲存至檔名為crytest.txt檔案內。在過程中,要求使用者設定一組密碼用來解密,加密完成後,從「cat encrytest.txt」即可發現其內容已是加密過後的資訊。

(3) 將以des演算法加密的檔案予以解密,並將解密後 的資料儲存至檔名為decrytest.txt的檔案內,同樣地,在解密過程中須輸入相同的密碼,才可解密。

(4) 驗證解密之後的檔案內容,是否已經正常完整的 解密。

非對稱式密碼實作

再以OpenSSL實作非對稱式密碼,以RSA演算法為例,如圖5所示。


▲圖5 非對稱式密碼實作。

(1) 以RSA演算法(參數為genrsa)產生一把長度為 2,048位元,檔名為private.pem的私鑰。

(2) 利用此私鑰,產生一把相對應的公鑰(檔名為 public.pem),以「ls *.pem」查看,會產生兩個金鑰檔案。

(3) 利用公鑰(-inkey public.pem)來對檔名為testrsa. txt的檔案加密(-encrypt)並將加密過後的檔案,儲存到檔名為encrytestrsa.txt。

(4) 利用相對應的私鑰(-inkey public.pem)來對 encrytestrsa.txt加以解密(-decrypt),並將解密過後的檔案,放置於decrytestrsa.txt,最後再利用「cat decrytestrsa.txt」查看是否已正常的解密。

介紹完以OpenSSL實作密碼系統後,可以知道運用密碼系統能夠保證資料傳輸時的機密性和完整性要求。但對於驗證商家身分卻無能為力,也因此而有PKI(Public Key Infrastructure,公開金鑰基礎建設)機制來解決驗證身分的問題。在PKI驗證成功後,就會發給伺服器一個證明身分的數位憑證來證明伺服器的身分。

什麼是PKI(公開金鑰基礎建設)

首先說明SSL網站的運作過程,如圖6所示,相關流程說明如下:


▲圖6 SSL網站的運作流程。

(1) 使用者端送出Client Hello訊息,將瀏覽器所支援 的SSL版本、加密演算法等相關資訊發送給SSL網站伺服器。

(2) SSL伺服器收到Client Hello訊息後,確定本次通 訊採用的SSL版本和加密套件後,利用Server Hello訊息將SSL伺服器上的數位憑證的資訊回覆給瀏覽器。在此階段中會驗證數位憑證上相關資訊,例如數位憑證的有效期限、是否為公正的第三方所簽署。此時瀏覽器會驗證數位憑證是否安全,一旦發現有疑慮,就會警示使用者,如圖7所示為連結到自行簽署數位憑證的網站所產生的警示畫面。


▲圖7 連結到自行簽署數位憑證的網站所產生的警示畫面。

(3) 在確認數位憑證後,瀏覽器至公開地方取得SSL 網站伺服器公開公鑰(Public Key),並利用此公鑰加密本次連線所要使用的金鑰(稱為Session Key)。

(4) 最後,SSL網站伺服器端取得加密過後的Session Key後,即以本身的網站伺服器私鑰(Private Key)來解密,並取得相關的Session Key後,接下來雙方的通訊即利用此Session Key進行加解密。

而在上述流程中,僅是利用OpenSSL程式庫來實現資料傳輸的加解密功能以確保資料的安全。但在現實運用上,還會遇到下列的問題:

1. 數位憑證是代表網站伺服器的身分,因此在申請時 需要一套機制來確認申請者的真實身分,並在確認完後再發給相關數位憑證。

2. 數位憑證該如何管理?可能會有廢止、過期等相關 管理問題。

PKI的出現就是為了解決上述的問題,簡而言之,PKI就是一套維護數位憑證的機制(這有點像是現實生活中的戶政單位),整體架構圖如圖8所示。


▲圖8 公開金鑰基礎建設(PKI)運作流程。

其中,RA(Registration Authority,註冊中心)主要目的在於認證申請者的身分,就如同在現實生活中,有些銀行業務需要臨櫃申請(行員會審核是否為本人),在確認身分之後,即會產生該申請者所屬的公鑰和相對應的私鑰,私鑰須由申請者自行妥善保管。

接著,RA會產生一組憑證請求檔(C.S.R)連同申請者的公鑰送往憑證管理中心(Certificate Authority,CA),在CA確認完成後,即會簽署數位憑證(憑證格式為X.509),並且將相關的憑證送往目錄服務(以下簡稱DS)系統管理。接下來,說明數位憑證所使用的格式X.509。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!