日期:2012-11-16  浏览次数:20952 次

網站如何加入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,若未使用則不允許輸入。