The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

          SSL (Secure Socket Layer - 安全套接字層)

          功能:保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,確保數據在網絡上之傳輸過程中不會被截取及竊聽,防止篡改。

           

          如何讓我們的WEB應用程序應用SSL安全保障?經過幾天摸索,終于實現 TOMCAT+SSL 雙向認證,也就是說,首先,客戶端將要認證服務器的安全性,確保訪問的是正確的服務器,而非假冒的釣魚網站;其次,服務器也要認證客戶端的安全性,只有那些擁有服務器授權證書的客戶端才可以訪問。

           

          下面請遵循詳細步驟

          1.       D盤建立目錄:mykeys

          2.       啟動命令行,并轉移到 d:/mykeys

          a)         創建服務器密鑰,其密鑰庫為 d:/mykeys/server.ks,注意keypassstorepass保持一致,它們分別代表 密鑰密碼和密鑰庫密碼,注意 CN=localhost 中,localhost表示要配置SSL的主機名,不能任意指定
          D:/mykeys>keytool -genkey -v -alias serverKey -dname "CN=localhost" -keyalg RSA -keypass rwm258-keystore server.ks -storepass rwm258

          b)        創建客戶端密鑰,其密鑰庫為 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:/mykeys>keytool -export -alias clientKey -file clientKey.cer -keystore client.p12 -storepass lyl147 -storetype PKCS12

          d)        將上述客戶端密鑰文件導入服務器證書庫,并設置為信任證書;注意會問你是否信任該證書,回答 y 即可
          D:/mykeys>keytool -import -v -alias clientKey -file clientKey.cer -keystore server.ks -storepass rwm258

          3.       為了在本機瀏覽器中進行SSL訪問,請:雙擊 d:/mykeys/client.p12 ,將啟動證書向導

          a)         2步:要導入的文件 文件名  D:/mykeys/client.p12

          b)        3步:為私鑰鍵入密碼lyl147 ,勾選:標志此密鑰為可導出的

          c)        4步:證書存儲,選:將所有的證書放入下列存儲區,然后,瀏覽-個人

          d)        現在,打開IE,查看證書:工具-Internet選項-內容-證書-個人,可以看到 SomeOne 證書已被安裝

          4.       配置TOMCAT服務器,以支持SSL認證,編輯文件:%tomcat_home%/conf/server.xml,下面這段配置代碼本來是被屏蔽的,現在請取消其屏蔽,并相應增加密鑰庫的配置,其中clientAuth="true"用以啟動雙向認證,否則,只有客戶端認證服務器-單向

          <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)         將彈出一個消息框,這是要客戶端認證服務器,查看證書可看到服務器證書為 localhost ,回顧前面的步驟,正是我們創建的那個服務器證書;這里點 

          b)        頁面出現,說明客戶端被允許訪問

          6.       現在,再次打開IE,工具-Internet選項-內容-證書-個人 ,刪除那個 SomeOne 證書

          a)         現在,再次在IE瀏覽器中訪問:https://localhost:8443/ 你會發現,回顧前面的 3 步驟,你會明白為什么要將客戶端證書導入 IE 瀏覽器;

          7.       請再次重復 3 步驟,之后再嘗試訪問

           

          OK,至此,我們在本機上SSL雙向配置已經成功,那么,換另一臺電腦來訪問本機服務器如何處理呢?很簡單,把 d:/mykeys/client.p12 復制到該機器,然后執行 3 步驟,將這個證書導入到該機器的 IE瀏覽器個人證書中,記得密碼是:lyl147;當然,在那臺電腦上訪問時,要將localhost修改為本機主機名或IP地址

           

          -------------------------------------------------------------------

           

          要使你自己的WEB程序應用SSL安全訪問,請遵循如下配置

          在你應用的 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>

           

          你會發現,即使使用 http://....:8080 來訪問你的應用程序,它也會重定向為 https://....8443 訪問,也就是說,你的應用已經強制使用SSL安全訪問層

          OK,現在,充分享受 SSL 安全訪問服務吧

           

          此外,你還可以在你的程序中驗證客戶證書,實現客戶端證書登錄,具體這里不談了,下次給出完整程序

          posted on 2013-11-28 17:23 Eric_jiang 閱讀(284) 評論(0)  編輯  收藏 所屬分類: tomcat
          主站蜘蛛池模板: 阿克陶县| 麦盖提县| 普陀区| 宜章县| 浠水县| 东台市| 夏河县| 西华县| 河北省| 通辽市| 鄂伦春自治旗| 长沙县| 虹口区| 清丰县| 聂拉木县| 西安市| 卫辉市| 法库县| 顺平县| 洪洞县| 中卫市| 安陆市| 宿州市| 达日县| 武冈市| 广平县| 金川县| 长宁区| 和田市| 信丰县| 刚察县| 舒兰市| 砚山县| 屯留县| 濮阳市| 珠海市| 宣化县| 正蓝旗| 辽宁省| 原阳县| 和田县|