當前位置:編程學習大全網 - 源碼下載 - 騰訊地圖webservice api 支持 https方式的調用嗎

騰訊地圖webservice api 支持 https方式的調用嗎

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="e-file-list>之後增加Xml代碼:

<!-- 強制SSL配置,即普通的請求也會重定向為SSL請求 -->

<security-constraint>

<web-resource-collection>

<web-resource-name>SSL</web-resource-name>

<url-pattern>/service/*</url-pattern><!--全站使用SSL <url-pattern>/*</url-pattern>-->

</web-resource-collection>

<user-data-constraint>

<description>SSL required</description>

<!-- CONFIDENTIAL: 要保證服務器和客戶端之間傳輸的數據不能夠被修改,且不能被第三方查看到 -->

<!-- INTEGRAL: 要保證服務器和client之間傳輸的數據不能夠被修改 -->

<!-- NONE: 指示容器必須能夠在任壹的連接上提供數據。(即用HTTP或HTTPS,由客戶端來決定)-->

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>

說明:

這裏限制了WEB service服務地址的訪問必須為.ssl.trustStore","D:/SSL/client/client.truststore");

System.setProperty("javax.net.ssl.trustStorePassword","zljzlj");

System.setProperty("javax.net.ssl.keyStoreType","PKCS12");

System.setProperty("javax.net.ssl.keyStore","D:/SSL/client/client.p12");

System.setProperty("javax.net.ssl.keyStorePassword","client");

StringendPoint="https://127.0.0.1:8443/easbCut/services/ApplyFormService";

...

通過設置參數來指定客戶端連接時所使用的客戶端證書,這裏還可以采用修改JVM啟動參數的的方式來執行,但出於不影響其他功能的考慮,這裏采用System.setProperty的方式來設置這些參數,在使用結束後,可以還原這些參數配置。做為客戶端的開發者,可以把拿到的證書文件後,只執行步驟3。

  • 上一篇:在.net中 如何直接取得aspx頁面的html源代碼啊?(為了以後導出用)
  • 下一篇:如何制作鏈接上傳如何制作鏈接上傳視頻
  • copyright 2024編程學習大全網