web service在企業應用中常常被用作不同系統之間的介面方式。但是如果沒有任何安全機制的話,顯然是難以委以重任的。比較直接的web service加密方式就是使用HTTPS方式(SSL證書加密)加密連線,並且只允許持有信任證書的客戶端連線,即SSL雙向認證。這樣就保證了連線來源的可信度以及資料在傳輸過程中沒有被竊取或篡改。透過HTTPS加密方式訪問web service具體方法如下: 【準備工作】 (1)檢查JDK的環境變數是否正確。本文使用JDK 1.6 (2)準備web伺服器,這裡選用TOMCAT 6.0 (3)準備web service服務端和客戶端。 【生成證書】 這裡用到的檔案,這裡存放在D:/SSL/資料夾內,其中D:/SSL/server/內的檔案是要交給伺服器用的,D:/SSL/client/內的檔案是要交給客戶端用的。 1生成服務端證書 開始-執行-CMD-在dos視窗執行下執行命令: keytool -genkey -v -aliastomcat -keyalg RSA -keystore D:/SSL/server/tomcat.keystore -dname"CN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN" -validity 3650-storepass zljzlj -keypass zljzlj 說明: keytool 是JDK提供的證書生成工具,所有引數的用法參見keytool –help -genkey 建立新證書 -v 詳細資訊 -alias tomcat 以”tomcat”作為該證書的別名。這裡可以根據需要修改 -keyalg RSA 指定演算法 -keystoreD:/SSL/server/tomcat.keystore 儲存路徑及檔名 -dname"CN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN" 證書發行者身份,這裡的CN要與釋出後的訪問域名一致。但由於這裡是自簽證書,如果在瀏覽器訪問,仍然會有警告提示。真正場景中建議申請CA機構(wosign)簽發的SSL證書更安全。 -validity 3650證書有效期,單位為天 -storepass zljzlj 證書的存取密碼 -keypass zljzlj 證書的私鑰 2 生成客戶端證書 執行命令: keytool ‐genkey ‐v ‐aliasclient ‐keyalg RSA ‐storetype PKCS12 ‐keystore D:/SSL/client/client.p12 ‐dname"CN=client,OU=zlj,O=zlj,L=bj,ST=bj,C=CN" ‐validity 3650 ‐storepassclient ‐keypass client 說明: 引數說明同上。這裡的-dname 證書發行者身份可以和前面不同,到目前為止,這2個證書可以沒有任何關係。下面要做的工作才是建立2者之間的信任關係。 3 匯出客戶端證書 執行命令: keytool ‐export ‐aliasclient ‐keystore D:/SSL/client/client.p12 ‐storetype PKCS12 ‐storepass client‐rfc ‐file D:/SSL/client/client.cer 說明: -export 執行匯出 -file 匯出檔案的檔案路徑 4 把客戶端證書加入服務端證書信任列表 執行命令: keytool ‐import ‐aliasclient ‐v ‐file D:/SSL/client/client.cer ‐keystoreD:/SSL/server/tomcat.keystore ‐storepass zljzl 說明: 引數說明同前。這裡提供的密碼是服務端證書的存取密碼。 5 匯出服務端證書 執行命令: keytool -export -aliastomcat -keystore D:/SSL/server/tomcat.keystore -storepass zljzlj -rfc -fileD:/SSL/server/tomcat.cer 說明: 把服務端證書匯出。這裡提供的密碼也是服務端證書的密碼。 6 生成客戶端信任列表 執行命令: keytool -import -fileD:/SSL/server/tomcat.cer -storepass zljzlj -keystoreD:/SSL/client/client.truststore -alias tomcat –noprompt 說明: 讓客戶端信任服務端證書 【 配置服務端為只允許HTTPS連線】 1 配置Tomcat 目錄下的/conf/server.xml Xml程式碼: <Connectorport="8443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="true" sslProtocol="TLS"keystoreFile="D:/SSL/server/tomcat.keystore" keystorePass="zljzlj"truststoreFile="D:/SSL/server/tomcat.keystore" truststorePass="zljzlj" /> 說明: 在server.xml裡面這段內容本來是被註釋掉的,如果想使用https的預設埠443,請修改這裡的port引數。其中的clientAuth="true" 指定了雙向證書認證。
web service在企業應用中常常被用作不同系統之間的介面方式。但是如果沒有任何安全機制的話,顯然是難以委以重任的。比較直接的web service加密方式就是使用HTTPS方式(SSL證書加密)加密連線,並且只允許持有信任證書的客戶端連線,即SSL雙向認證。這樣就保證了連線來源的可信度以及資料在傳輸過程中沒有被竊取或篡改。透過HTTPS加密方式訪問web service具體方法如下: 【準備工作】 (1)檢查JDK的環境變數是否正確。本文使用JDK 1.6 (2)準備web伺服器,這裡選用TOMCAT 6.0 (3)準備web service服務端和客戶端。 【生成證書】 這裡用到的檔案,這裡存放在D:/SSL/資料夾內,其中D:/SSL/server/內的檔案是要交給伺服器用的,D:/SSL/client/內的檔案是要交給客戶端用的。 1生成服務端證書 開始-執行-CMD-在dos視窗執行下執行命令: keytool -genkey -v -aliastomcat -keyalg RSA -keystore D:/SSL/server/tomcat.keystore -dname"CN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN" -validity 3650-storepass zljzlj -keypass zljzlj 說明: keytool 是JDK提供的證書生成工具,所有引數的用法參見keytool –help -genkey 建立新證書 -v 詳細資訊 -alias tomcat 以”tomcat”作為該證書的別名。這裡可以根據需要修改 -keyalg RSA 指定演算法 -keystoreD:/SSL/server/tomcat.keystore 儲存路徑及檔名 -dname"CN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN" 證書發行者身份,這裡的CN要與釋出後的訪問域名一致。但由於這裡是自簽證書,如果在瀏覽器訪問,仍然會有警告提示。真正場景中建議申請CA機構(wosign)簽發的SSL證書更安全。 -validity 3650證書有效期,單位為天 -storepass zljzlj 證書的存取密碼 -keypass zljzlj 證書的私鑰 2 生成客戶端證書 執行命令: keytool ‐genkey ‐v ‐aliasclient ‐keyalg RSA ‐storetype PKCS12 ‐keystore D:/SSL/client/client.p12 ‐dname"CN=client,OU=zlj,O=zlj,L=bj,ST=bj,C=CN" ‐validity 3650 ‐storepassclient ‐keypass client 說明: 引數說明同上。這裡的-dname 證書發行者身份可以和前面不同,到目前為止,這2個證書可以沒有任何關係。下面要做的工作才是建立2者之間的信任關係。 3 匯出客戶端證書 執行命令: keytool ‐export ‐aliasclient ‐keystore D:/SSL/client/client.p12 ‐storetype PKCS12 ‐storepass client‐rfc ‐file D:/SSL/client/client.cer 說明: -export 執行匯出 -file 匯出檔案的檔案路徑 4 把客戶端證書加入服務端證書信任列表 執行命令: keytool ‐import ‐aliasclient ‐v ‐file D:/SSL/client/client.cer ‐keystoreD:/SSL/server/tomcat.keystore ‐storepass zljzl 說明: 引數說明同前。這裡提供的密碼是服務端證書的存取密碼。 5 匯出服務端證書 執行命令: keytool -export -aliastomcat -keystore D:/SSL/server/tomcat.keystore -storepass zljzlj -rfc -fileD:/SSL/server/tomcat.cer 說明: 把服務端證書匯出。這裡提供的密碼也是服務端證書的密碼。 6 生成客戶端信任列表 執行命令: keytool -import -fileD:/SSL/server/tomcat.cer -storepass zljzlj -keystoreD:/SSL/client/client.truststore -alias tomcat –noprompt 說明: 讓客戶端信任服務端證書 【 配置服務端為只允許HTTPS連線】 1 配置Tomcat 目錄下的/conf/server.xml Xml程式碼: <Connectorport="8443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="true" sslProtocol="TLS"keystoreFile="D:/SSL/server/tomcat.keystore" keystorePass="zljzlj"truststoreFile="D:/SSL/server/tomcat.keystore" truststorePass="zljzlj" /> 說明: 在server.xml裡面這段內容本來是被註釋掉的,如果想使用https的預設埠443,請修改這裡的port引數。其中的clientAuth="true" 指定了雙向證書認證。