使用SSL/HTTPS協議來建立安全的AXIS服務傳輸

使用SSL/HTTPS協議來建立安全的AXIS服務傳輸

文章目錄

 使用SSL/HTTPS協議來傳輸

Web服務也可以使用SSL作爲傳輸協議。雖然JAX-RPC並沒有強制規定是否使用SSL協議,但在tomcat 下使用HTTPS協議。

1、使用JDK自帶的工具創建密匙庫和信任庫。

1)通過使用以下的命令來創建服務器端的密匙庫:

 keytool -genkey -alias Server -keystore server.keystore -keyalg RSA
  輸入keystore密碼:  changeit
  您的名字與姓氏是什麼?
  [Unknown]:  Server
  您的組織單位名稱是什麼?
  [Unknown]:  ec
  您的組織名稱是什麼?
  [Unknown]:  ec
  您所在的城市或區域名稱是什麼?
  [Unknown]:  beijing
  您所在的州或省份名稱是什麼?
  [Unknown]:  beijing
  該單位的兩字母國家代碼是什麼
  [Unknown]:  CN
CN=Server, OU=ec, O=ec, L=beijing, ST=beijing, C=CN 正確嗎?
  [否]:  y

輸入<Server>的主密碼
        (如果和 keystore 密碼相同,按回車):

以上命令執行完成後,將獲得一個名爲server.keystore的密匙庫。

2)生成客戶端的信任庫。首先輸出RSA證書:

keytool -export -alias Server -file test_axis.cer -storepass changeit -keystore server.keystore

然後把RSA證書輸入到一個新的信任庫文件中。這個信任庫被客戶端使用,被用來驗證服務器端的身份。

keytool -import -file test_axis.cer -storepass changeit -keystore client.truststore -alias serverkey -noprompt

以上命令執行完成後,將獲得一個名爲client.truststore的信任庫。

3)同理生成客戶端的密匙庫client.keystore和服務器端的信任庫server.truststore.

方便起見給出.bat文件 gen-cer-store.bat內容如下:

     
set SERVER_DN="CN=Server, OU=Linkage, O=Linkage, L=Nanjing, S=Jiangsu, C=CN"
set CLIENT_DN="CN=Client, OU=Linkage, O=Linkage, L=Nanjing, S=Jiangsu, C=CN"
set KS_PASS=-storepass linkage
set KEYINFO=-keyalg RSA

keytool -genkey -alias Server -dname %SERVER_DN% %KS_PASS% -keystore server.keystore %KEYINFO% -keypass linkage
keytool -export -alias Server -file alipms_axis.cer %KS_PASS% -keystore server.keystore
keytool -import -file alipms_axis.cer %KS_PASS% -keystore client.truststore -alias serverkey -noprompt

keytool -genkey -alias Client -dname %CLIENT_DN% %KS_PASS% -keystore client.keystore %KEYINFO% -keypass linkage
keytool -export -alias Client -file alipms_axis.cer %KS_PASS% -keystore client.keystore
keytool -import -file alipms_axis.cer %KS_PASS% -keystore server.truststore -alias clientkey -noprompt

好的,現在我們就有了四個文件:server.keystore,server.truststore,client.keystore,client.truststore

2、更改Tomcat的配置文件(server.xml),增加以下部署描述符:(其實裏面有,只是被註釋掉了)

<Connector port="8440" 
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               clientAuth="true" keystoreFile="f:\server.keystore" keystorePass="changeit"
                 truststoreFile="f:\server.truststore" truststorePass="changeit"
               sslProtocol="TLS" />

3、修改客戶端程序 TestClient.java(修改的部分已標出)

/**
 * webservice測試客戶端
 * 
 * @author XiongLiang
 */
public class QueryHijackInfoTest {

	public static void main(String[] args) throws RemoteException {
	    System.setProperty("javax.net.ssl.keyStore", "E:\\ssl\\client.keystore"); 
        System.setProperty("javax.net.ssl.keyStorePassword", "linkage"); 
        System.setProperty("javax.net.ssl.trustStore", "E:\\ssl\\client.truststore"); 
        System.setProperty("javax.net.ssl.trustStorePassword", "linkage"); 

		String queryURL = "https://192.168.58.161:8443/services/QueryHijackInfo?wsdl";
		String queryDomain = "xiongl.com";
		String queryNodeIp = "1.2.3.4";

		QueryHijackInfoProxy queryHijackInfoProxy = new QueryHijackInfoProxy(queryURL);
		String result = queryHijackInfoProxy.queryHijack(queryDomain,queryNodeIp);

		System.out.println("result: " + result);
	}

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章