在Web站點上,為了在非保密的Internet上傳輸保密或敏感信息,需要設(shè)置SSL.本文主要講述在RED HAT7.1中進(jìn)行SSL配置的基本過程.
在RED HAT7.1中進(jìn)行SSL配置的基本過程主要包含安裝APACHE和OPENSSL、創(chuàng)建自己的CA、簽署證書、更改httpd.conf幾個步驟。
安裝APACHE和OPENSSL
RED HAT7.1中已經(jīng)自帶了APACHE1.3.19和OPENSSL0.9.6,在安裝LINUX時選擇安裝WebServer和MOD_SSL即可,同時,配置Linux的起動模塊,使HTTPD在Linux起動時自動運(yùn)行。
創(chuàng)建自己的CA
# cd /usr/share/ssl/misc
# ./CA -newca
屏幕上出現(xiàn)如下的提示:CA certificate filename (or enter to create)
這是要求輸入要創(chuàng)建的CA的證書文件名, 可以直接回車或輸入證書文件名。
Making CA certificate ...
Using configuration from /usr/share/ssl/openssl.cnf
Generating a 1024 bit RSA private key ??
.....++++++
writing new privatekey to './demoCA/private/./cakey.pem'
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:-
此時要求輸入和驗證CA的私鑰口令、國家代碼(中國是CN)、省份、城市或地區(qū)、組織或企業(yè)名稱、部門名稱、CA的名稱或服務(wù)器的主機(jī)名稱、管理員電子郵件地址。
至此,在當(dāng)前目錄下生成了demoCA的目錄,CA的證書就在該目錄下,文件名為cacert.pem
生成服務(wù)器的證書請求
# ./CA -newreq
屏幕上出現(xiàn)如下的提示:
Using configurationfrom /usr/share/ssl/openssl.cnf
Generating a 1024 bit RSA private key ??
.++++++
writing new private key to 'newreq.pem'
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:
此時要求輸入和驗證服務(wù)器的私鑰口令、國家代碼(中國是CN)、省份、城市或地區(qū)、組織或企業(yè)名稱、部門名稱、CA的名稱或服務(wù)器的主機(jī)名稱、管理員電子郵件地址。
Please enter the following 'extra' attributes
to be sent with your certificaterequest
A challenge password []:
An optional company name []:
.Request (and private key) is in newreq.pem
這是要求輸入服務(wù)器的相關(guān)信息。
此時,在當(dāng)前目錄下生成了一個名為newreq.pem的文件,包含了要生成服務(wù)器數(shù)字證書的請求。
簽署證書
# ./CA -sign
屏幕上出現(xiàn)如下的提示:
Using configuration from /usr/share/ssl/openssl.cnf
Enter PEM pass phrase:
此時一樣需要輸入CA的私鑰口令、國家代碼(中國是CN)、省份、城市或地區(qū)、組織或企業(yè)名稱、部門名稱、CA的名稱或服務(wù)器的主機(jī)名稱、管理員電子郵件地址。
Certificate is to be certified until Nov 19 13:46:19 2002 GMT (365 days)
Sign the certificate? [y/n]:y
這時顯示證書請求文件中的各項信息,并詢問是否要簽署證書,回答y,進(jìn)行簽署。
1 out of 1 certificate requests certified, commit? [y/n]y
回答y,會顯示已經(jīng)簽署的證書的信息,并在當(dāng)前目錄下生成服務(wù)器的證書文件newcert.pem。
更改/etc/httpd/conf/httpd.conf
1) 更改SSL的根目錄
建立一個新目錄,如/var/www/sslhtml。
在<IfDefine HAVE_SSL>中修改
DocumentRoot “/var/www/html”為DocumentRoot “/var/www/sslhtml”
2) 更改服務(wù)器的證書文件的相關(guān)配置
# cp newcert.pem /etc/httpd/conf/ssl.crt/server.pem
在<IfDefine HAVE_SSL>中修改
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.pem
3) 更改服務(wù)器的證書密鑰文件的相關(guān)配置
# cp newreq.pem /etc/httpd/conf/ssl.key/server.pem
在<IfDefine HAVE_SSL>中修改
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
為SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.pem
示例文件
在SSL的根目錄中生成一個index.html,它是如下所示:
<html>
這是SSL示例!
</html>
測試
假如Web服務(wù)器的DNS名稱是dell.es.com.
在瀏覽器的URL地址欄里輸入 ,瀏覽器便會顯示APACHE安裝時確省的Test Page.
在瀏覽器的URL地址欄里輸入 ,注意:是 https 而不是http !
瀏覽器會提示站點已經(jīng)采用了SSL進(jìn)行數(shù)據(jù)的加密傳輸.由于我們的CA證書不是瀏覽器缺省的信任的根證書,所以,瀏覽器會說無法確認(rèn)服務(wù)器的證書可信。暫時不管,一直NEXT,最后,瀏覽器會顯示:這是SSL示例!
可以把CA的證書放在非SSL的站點上,讓瀏覽器下載并安裝CA證書,并將其設(shè)置成可信任的根證書,便可解決上面的問題.8 解除HTTPD起動時的口令輸入。
由于安全的原因,Web服務(wù)器的私鑰是口令加密了的,每次重新起動HTTPD或Linux時,都會要求輸入Web服務(wù)器的私鑰的口令。
如果要解除HTTPD起動時的口令輸入,可以這樣:
# cd /etc/httpd/conf/ssl.key
# cp server.pem server.pem.org
# openssl rsa -in server.pem.org -out server.pem
# chmod 400 server.pem
此時,Web服務(wù)器的私鑰已經(jīng)沒有口令加密,一定要確保server.pem文件除root外,任何用戶均無權(quán)讀取它。
以上所述,只是SSL配置的最基本的幾個過程。詳細(xì)的配置,請參考隨APACHE帶的MOD_SSL部分的文檔。