SSL(Secure Sockets Layer)安全協定又叫“安全套接層協定”。它是在網絡傳輸層之上提供的一種基于RSA和對稱加密算法的,用于浏覽器和Web伺服器之間的安全連接配接技術,用來提供兩個應用之間通信的保密,可信和身份認證。它被視為 Internet 上 Web 浏覽器和伺服器的标準安全性措施。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)是以安全為目标的http通道,即在http傳輸協定中加入ssl層,由于https的安全通路是基于ssl,是以要實作安全通路,要配置的就是讓ssl如何工作。 https是由網景公司開發,現在它被廣泛用于網際網路上安全領域的通訊,例如網絡銀行等方面。 http是基于的tcp的80 端口,而https是基于tcp的443端口。
安裝mod_ssl 子產品,建議使用yum來安裝,因為安裝此子產品時會有一些依賴關系。
yum install mod_ssl
如果使用rpm安裝,還要安裝的軟體包有:
distcache-1.4.5-14.1.i386.rpm
確定http軟體包已經安裝過了。
要給用戶端簽發證書,首要前提伺服器CA要有自簽證書。是以首先來做的就是建立自簽證書。
切換到/etc/pki/CA目錄下,執行openssl –genrsa 1024 > private/cakey.pem
來生成一對密鑰檔案。
在圖中可以看到建立的過程,完成後,到private目錄下檢視是否建立成功。也可以使用openssl –in cakey
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319809QTsE.jpg"></a>
接下來執行指令:
openssl req –new –x509 –key private/cakey.pem –out cacert.pem –days 3695
來生成一個待簽名的 CA根證書,用來給其他申請者進行頒發證書。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319811Af6m.jpg"></a>
在生成自簽證書時,要填寫證書資訊以確定CA的真實性。紅線框起來的是要填寫的内容,在試驗的時候可以有自己決定。
為了CA的證書安全性,建議将cakey.pem密鑰檔案的權限修改為600
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_12693198163ppj.jpg"></a>
接下來是編輯/etc/pki/tls/openssl.cnf 将裡面的路徑改為真實路徑。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_126931981722c8.jpg"></a>
建立檔案index.txt和serial 目的是存放頒發證書的資訊。完成後,檢視是否建立成功。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319819uZHr.jpg"></a>
好了,CA的自簽證書已經建立成功,接下來的CA任務就是給用戶端的頒發證書了。但是在頒發證書之前,用戶端要自己生成一對密鑰檔案,并向CA提出申請證書的請求。是以,下面要做的就是生成用戶端的密鑰,并且向CA提出申請了。具體步驟如下:
現在回到用戶端,
切換到/etc/httpd目錄下,建立ssl目錄
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319822aVF4.jpg"></a>
執行指令:openssl –genrsa 1024 &gt; http.key 來生成一對http協定的密鑰檔案。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319824eflK.jpg"></a>
密鑰生成了,下一步就是向CA提出申請證書的請求了。具體指令如下:
openssl req –new –key httpd.key –out httpd.csr
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319825jT0X.jpg"></a>
申請證書,當然要填寫申請者的資訊了。
紅線框起來的為示例。在資訊題寫完後,提示要輸入密碼,這個密碼是用于保證證書安全性的密碼,在查詢修改密鑰檔案是會用到。這裡就不再設定了。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319827ssFI.jpg"></a>
現在回到伺服器端。用戶端的申請證書的請求已經到達CA處,那麼CA該如何來給用戶端簽發證書呢?執行指令:
openssl ca –in httpd.csr –out httpd .crt –days 3655
有點錯誤了,該如何來解決呢?先看看出現錯誤的原因。錯誤提示是說在/etc/pki/CA/目錄下,沒有newcerts檔案,此時,可以看到,newcerts目錄是用來存放CA簽發證書資訊的,再聯想到前面生成CA自簽證書後建立的index.txt檔案和serial檔案,是以可以總結出:
CA在頒發證書時要用到三個檔案: newcerts、index.txt和serial
如果在前面不建立index.txt檔案和serial檔案,在此處也會出現找不到index.txt檔案和serial檔案的。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319830zL1z.jpg"></a>
錯誤既然找到了,那麼就去/etc/pki/CA目錄下建立newserts目錄就行了。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319832umyy.jpg"></a>
再來執行簽發證書的指令,OK!執行成功啦!
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_12693198350tDD.jpg"></a>
接下來就是一些互動過程,詢問是否确認給用戶端頒發證書。當然要頒發了,輸入y就行了(如果不想頒發,也可以輸入n)。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_12693198379rBC.jpg"></a>
來檢視一下剛剛生成的證書吧?
可以使用openssl x509 -in httpd.crt -noout -text檢視生成的證書的資訊
也可以使用下面的指令檢視證書持有人的辨別資訊
openssl x509 -in httpd.cst -noout -subject
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319839FU9P.jpg"></a>
證書生成了,可是以前用的http協定不知道已經生成證書了。因為在預設情況下http協定是關閉支援ssl安全通路的。是以,下面要做的就是讓http協定記住以後通路伺服器要用https協定。具體操作如下:
切換到/etc/httpd/conf.d/目錄下,編輯ssl.conf檔案
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319840Q4Nd.jpg"></a>
找到SSLCertificateFile 和SSLCertificateKeyFile這兩行,沒有修改之前是這樣的
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319843FmdG.jpg"></a>
把這兩行修改為:SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319846w4eq.jpg"></a>
修改完成後,儲存退出。重新開機http服務。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319849OtL0.jpg"></a>
到此為止,所有的配置工作已經完成,嗯,是該驗證一下的時候了!
在另外一台機器上,打開浏覽器,輸入IP位址,為了驗證試驗效果,先以http協定來通路伺服器,在之前,伺服器端已寫好測試網頁。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319852LG66.jpg"></a>
再來用https協定通路一下伺服器,看看會出現什麼效果呢?
選擇“是”進入下一步。也可以先選擇“檢視證書”來檢視一下證書資訊來驗證一下剛才的配置。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319854RDep.jpg"></a>
再次選擇“是”。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319857I7jr.jpg"></a>
OK,通過https協定也可以通路到伺服器端的測試頁,那麼與http通路的呢?留意下圖中右下角的鎖标志,這就代表通路協定是基于加密的安全通路。在實際生活中,通路一些支付網站會見到這樣的标志。
<a href="http://linuxtro.blog.51cto.com/attachment/201003/23/1239505_1269319861JgCt.jpg"></a>
本文轉自 linuxtro 51CTO部落格,原文連結:http://blog.51cto.com/linuxtro/287003,如需轉載請自行聯系原作者