SSL (Secure Socket Layer - 安全套接字層)
功能:保障在Internet上數(shù)據(jù)傳輸之安全,利用數(shù)據(jù)加密(Encryption)技術(shù),確保數(shù)據(jù)在網(wǎng)絡(luò)上之傳輸過程中不會被截取及竊聽,防止篡改。
如何讓我們的WEB應(yīng)用程序應(yīng)用SSL安全保障?經(jīng)過幾天摸索,終于實(shí)現(xiàn) TOMCAT+SSL 雙向認(rèn)證,也就是說,首先,客戶端將要認(rèn)證服務(wù)器的安全性,確保訪問的是正確的服務(wù)器,而非假冒的釣魚網(wǎng)站;其次,服務(wù)器也要認(rèn)證客戶端的安全性,只有那些擁有服務(wù)器授權(quán)證書的客戶端才可以訪問。
下面請遵循詳細(xì)步驟
1. 在D盤建立目錄:mykeys
2. 啟動命令行,并轉(zhuǎn)移到 d:/mykeys
a) 創(chuàng)建服務(wù)器密鑰,其密鑰庫為 d:/mykeys/server.ks,注意keypass和storepass保持一致,它們分別代表 密鑰密碼和密鑰庫密碼,注意 CN=localhost 中,localhost表示要配置SSL的主機(jī)名,不能任意指定
D:/mykeys>keytool -genkey -v -alias serverKey -dname "CN=localhost" -keyalg RSA -keypass rwm258-keystore server.ks -storepass rwm258
b) 創(chuàng)建客戶端密鑰,其密鑰庫為 d:/mykeys/client.p12,注意這個密鑰庫的后綴名,注意密鑰庫類型PKCS12
D:/mykeys>keytool -genkey -v -alias clientKey -dname "CN=SomeOne" -keyalg RSA -keypass lyl147 -keystore client.p12 -storepass lyl147 -storetype PKCS12
c) 將客戶端密鑰導(dǎo)出為證書文件
D:/mykeys>keytool -export -alias clientKey -file clientKey.cer -keystore client.p12 -storepass lyl147 -storetype PKCS12
d) 將上述客戶端密鑰文件導(dǎo)入服務(wù)器證書庫,并設(shè)置為信任證書;注意會問你是否信任該證書,回答 y 即可
D:/mykeys>keytool -import -v -alias clientKey -file clientKey.cer -keystore server.ks -storepass rwm258
3. 為了在本機(jī)瀏覽器中進(jìn)行SSL訪問,請:雙擊 d:/mykeys/client.p12 ,將啟動證書向?qū)?/span>
a) 第2步:要導(dǎo)入的文件 文件名 D:/mykeys/client.p12
b) 第3步:為私鑰鍵入密碼lyl147 ,勾選:標(biāo)志此密鑰為可導(dǎo)出的
c) 第4步:證書存儲,選:將所有的證書放入下列存儲區(qū),然后,瀏覽-個人
d) 現(xiàn)在,打開IE,查看證書:工具-Internet選項(xiàng)-內(nèi)容-證書-個人,可以看到 SomeOne 證書已被安裝
4. 配置TOMCAT服務(wù)器,以支持SSL認(rèn)證,編輯文件:%tomcat_home%/conf/server.xml,下面這段配置代碼本來是被屏蔽的,現(xiàn)在請取消其屏蔽,并相應(yīng)增加密鑰庫的配置,其中clientAuth="true"用以啟動雙向認(rèn)證,否則,只有客戶端認(rèn)證服務(wù)器-單向
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="D:/mykeys/server.ks" keystorePass="rwm258"
truststoreFile="D:/mykeys/server.ks " truststorePass=" rwm258" />
5. 啟動 TOMCAT,然后在IE瀏覽器中訪問:https://localhost:8443/
a) 將彈出一個消息框,這是要客戶端認(rèn)證服務(wù)器,查看證書可看到服務(wù)器證書為 localhost ,回顧前面的步驟,正是我們創(chuàng)建的那個服務(wù)器證書;這里點(diǎn) 是
b) 頁面出現(xiàn),說明客戶端被允許訪問
6. 現(xiàn)在,再次打開IE,工具-Internet選項(xiàng)-內(nèi)容-證書-個人 ,刪除那個 SomeOne 證書
a) 現(xiàn)在,再次在IE瀏覽器中訪問:https://localhost:8443/ 你會發(fā)現(xiàn),回顧前面的 3 步驟,你會明白為什么要將客戶端證書導(dǎo)入 IE 瀏覽器;
7. 請?jiān)俅沃貜?fù) 3 步驟,之后再嘗試訪問
OK,至此,我們在本機(jī)上SSL雙向配置已經(jīng)成功,那么,換另一臺電腦來訪問本機(jī)服務(wù)器如何處理呢?很簡單,把 d:/mykeys/client.p12 復(fù)制到該機(jī)器,然后執(zhí)行 3 步驟,將這個證書導(dǎo)入到該機(jī)器的 IE瀏覽器個人證書中,記得密碼是:lyl147;當(dāng)然,在那臺電腦上訪問時,要將localhost修改為本機(jī)主機(jī)名或IP地址
-------------------------------------------------------------------
要使你自己的WEB程序應(yīng)用SSL安全訪問,請遵循如下配置
在你應(yīng)用的 web.xml 文件的 <web-app></web-app> 中加入如下配置
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
你會發(fā)現(xiàn),即使使用 http://....:8080 來訪問你的應(yīng)用程序,它也會重定向?yàn)?/span> https://....8443 訪問,也就是說,你的應(yīng)用已經(jīng)強(qiáng)制使用SSL安全訪問層
OK,現(xiàn)在,充分享受 SSL 安全訪問服務(wù)吧
此外,你還可以在你的程序中驗(yàn)證客戶證書,實(shí)現(xiàn)客戶端證書登錄,具體這里不談了,下次給出完整程序