網站如何加入SSL安全傳輸功能呢?
如何於您的網站加入SSL(Secure Sockets Layer)安全傳輸功能呢?
網路上的傳輸資料,都可能被攔截、竄改。首先我們先看看,如何將資料安全的傳輸呢?
甚麼是對稱金鑰(Session Key)法、公開金鑰(Public Key)法、SSL(Secure Sockets Layer)呢?
對稱金鑰(Session Key)法
最簡單的方法,為傳送者將待傳送的資料使用一把對稱金鑰(Session Key)加密,傳送當中的資料為亂碼,不怕被人攔截,接收者收到資料後使用同一把對稱金鑰(Session Key)解密。
所謂的金鑰(Key)並不是真的是一把鑰匙,而是一個加解密的運算法則,譬如將每一個資料加2,2即為一把金鑰。
對稱金鑰(Session Key)法的問題,為如何於網路上安全地交付這一把加解密的鑰匙?這一把鑰匙於網路上傳送交付,也可能被攔截、竄改。
公開金鑰(Public Key)法
於是,有人發明公開金鑰(Public Key)法,傳送者將待傳送的資料使用接收者的公開金鑰(Public Key)加密,傳送當中的資料為亂碼,不怕被人攔截,接收者收到資料後使用另外一把接收者的的私密金鑰(Private Key)解密。
由於公開金鑰(Public Key)不怕知道,因此適合於網路上安全地交付這一把加密用的公開金鑰(Public Key)。
由於對稱金鑰(Session Key)法的運算較複雜,運算速度比對稱金鑰(Session Key)法慢上數千倍。
SSL(Secure Sockets Layer)
SSL(Secure Sockets Layer),則融合對稱金鑰(Session Key)法、和公開金鑰(Public Key)法的優點。
瀏覽器會先產生一把對稱金鑰(Session Key),將待傳送的資料使用這一把對稱金鑰(Session Key)加密,再使用接收者的公開金鑰(Public Key)將這一把對稱金鑰(Session Key)加密,傳送當中的資料為亂碼,接收者收到資料後使用另外一把接收者的私密金鑰(Private Key)先將對稱金鑰(Session Key)解密,再使用這一把對稱金鑰(Session Key)將傳送的資料解密。
公開金鑰(Public Key)法的問題,為如何確認這一把加密用接收者的公開金鑰(Public Key)的正確性?這一把接收者的公開金鑰(Public Key)於網路上傳送交付,也可能被攔截、竄改。
因此必須有一個具備公信力的認證中心即所謂的CA(Certificate Authority),對接收者的即網站伺服器來核發一個伺服器認證,以證實這一把加密用接收者的公開金鑰(Public Key)確定為此伺服器所有。
SSL(Secure Sockets Layer),於網路上溝通的流程,如下:
首先瀏覽器發出https:// 的SSL要求。
網站伺服器回應伺服器認證,包括伺服器的公開金鑰(Public Key)、認證中心CA和其數位簽章、效期、序號、使用者,確定為此伺服器所有。
瀏覽器會先產生一把對稱金鑰(Session Key),再使用伺服器的公開金鑰(Public Key)將這一把對稱金鑰(Session Key)加密,伺服器收到後使用另外一把伺服器的私密金鑰(Private Key)先解密出對稱金鑰(Session Key)。
瀏覽器將待傳送的資料使用這一把對稱金鑰(Session Key)加密,伺服器收到資料後,再使用這一把對稱金鑰(Session Key)將傳送的資料解密。
Certificate Server安裝
於Windows NT Option Pack當中,包括Microsoft Certificate Server,提供認證中心CA的功能。對伺服器核發伺服器認證,可以提供SSL安全傳輸的功能。
若要安裝Certificate Server,執行Windows NT Option Pack的安裝程式,選擇 [新增/移除],勾選 [Certificate Server]。
輸入資料庫和記錄的安裝路徑,和認證中心的描述,即可將Certificate Serve安裝好。
申請伺服器認證
前面談到必須有一個具備公信力的認證中心CA,對網站伺服器來核發一個伺服器認證,以證實公開金鑰(Public Key)確定為此伺服器所有。
您可以挑選具公信力的認證中心CA,對網站伺服器來核發一個伺服器認證。也可以使用Windows NT Option Pack的Microsoft Certificate Server,自己成立一個認證中心CA,就可以對伺服器核發伺服器認證,以提供SSL安全傳輸的功能。
登記為「可信任」的CA
安裝好Certificate Server的伺服器認證後,第二個步驟,為於瀏覽器登記認證中心CA為「可信任」的CA,執行 http://localhost/certsrv/ CertEnroll/cacerts.htm,按下 [Certificate for LISA\Actif CA]。
選擇開啟這個檔案,即可將Certificate Server的認證中心CA加到受信任發照者清單中,如。
於瀏覽器的 [Internet選項] 的 [內容] 之 認證 [機構] 中,可以看到已經將Certificate Server的認證中心CA加到受信任機構清單中。
使用SSL(Secure Sockets Layer)
接著即可使用SSL(Secure Sockets Layer)了,將瀏覽器傳送的資料加密,使用https://執行。
ASP程式碼,如下:
<% If UCase(Request.ServerVariables("HTTPS")) = "ON" Then %>
<form action="ssl2.asp" method="GET">
使用者: <INPUT TYPE=TEXT NAME=name1 VALUE=<% =Request("name1") %>><br>
密碼: <INPUT TYPE=TEXT NAME=password1 VALUE=<% =Request("password1") %>>
<input type=submit VALUE="寫完了">
</form>
<hr>
<% else %>
須使用https://
<% end if %>
其中使用UCase(Request.ServerVariables("HTTPS")) = "ON"檢查是否使用https,若未使用則不允許輸入。