1. 程式人生 > >java客戶端呼叫 https 的webservice

java客戶端呼叫 https 的webservice

證書

以 coremail 的伺服器為例

私鑰

/home/coremail/conf/server

公鑰

/home/coremail/conf/server.crt

Webservice JAVA 客戶端

1. 新增新的金鑰庫
> cd $JAVA_HOME\jre\lib\security
> keytool -import -keystore ./jssecacerts -alias coremail -file $公鑰路徑

公鑰路徑如:C:\Users\Administrator\Desktop\server.crt
2. 檢視 server.crt 公鑰的CN,即可信域名
> cd $JAVA_HOME\jre\lib\security
> keytool -list -alias coremail -keystore ./jssecacerts -v
輸入金鑰庫口令: changeit

金鑰庫型別: JKS
金鑰庫提供方: SUN

您的金鑰庫包含 1 個條目

別名: coremail
建立日期: 2016-12-24
條目型別: trustedCertEntry

所有者: CN=demo.coremail.cn, OU=Coremail, O=Mailtech, L=GuangZhou, ST=GuangDong, C=CN
釋出者: CN=ca.mailtech.cn, OU=CA, O=Mailtech, L=GuangZhou, ST=GuangDong, C=CN
序列號: 11
有效期開始日期: Thu Dec 15 16:55:49 CST 2011, 截止日期: Mon Mar 02 16:55:49 CST 2020 證書指紋: MD5: 83:59:8D:FD:1A:FE:DC:57:FF:5C:7A:BA:C9:50:68:B0 SHA1: 32:AC:92:0F:95:44:90:B8:26:05:B2:FC:9A:91:38:FF:BA:33:18:E2 SHA256: 9A:F6:5B:1F:5C:2F:5C:4D:C5:39:35:1E:73:62:28:20:36:C3:D5:B4:F8:DA:82:71:FD:B6:01
:F2:B4:DF:9D:EC 簽名演算法名稱: SHA1withRSA 版本: 1
3. 根據 server.crt 的CN,配置 host 檔案
> cd C:\Windows\System32\drivers\etc
4. 編輯 hosts 新增如下
<webservice ip 地址> demo.coremail.cn
5. Demo 程式碼(API.java 和 ReturnInfo.java 在文件最底下)
import javax.jws.WebService;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.io.*;
import java.net.*;

/**
 * Created by Edward on 2015/11/24.
 */
public class Demo {


    public static void main(String[] args) throws IOException {
       
        String wsdl = "https://demo.coremail.cn/apiws/services/API?wsdl";       
        URL wsdlURL = new URL(wsdl);
        Service service = Service.create(wsdlURL, new QName("http://coremail.cn/apiws", "API"));
        API api = service.getPort(API.class);

        ReturnInfo info = api.userExist("[email protected]");
        System.out.println(info);
    }
}
6. Exception
  • 未建立 jssecacerts
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
  • 解決辦法
> keytool -import -keystore ./jssecacerts -alias coremail -file $公鑰路徑
  • 未配置 host 檔案
Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present
  • 解決辦法
向 C:\Windows\System32\drivers\etc\hosts 新增如下

<webservice ip 地址> demo.coremail.cn
7. 說明
  • jvm 的SSL 證書獲取方式
  • 先找到 $JAVA_HOME/jre/lib/security/jssecacerts 並檢查是否信任
  • 若 jssecacerts 不存在,則通過 cacerts 檢查是否信任
  • 也可以通過System.setProperty("javax.net.ssl.trustStore",path_to_your_cacerts_file);臨時指定金鑰庫路徑

相關推薦

java客戶呼叫 httpswebservice

證書 以 coremail 的伺服器為例 私鑰 /home/coremail/conf/server 公鑰 /home/coremail/conf/server.crt Webservice JAVA 客戶端 1. 新增新的金鑰庫 > cd $JA

JAVA客戶呼叫遠端WebService服務示例

/** * 呼叫WebService服務測試 */ public class ParseJsonDataTest { private static final String CAPE_WSDL_ADDRESS = "http://XXXX/XXXX?

Tomcat + 數字證書 部署webservice (客戶呼叫https webService)

關於tomcat +數字證書類例子網路上很多,使用keytool工具即可,配置可見: webService打包部署tomcat: 需要jar包:jaxws-2_0.jar  可到官網下載 WebService目錄結構: package com.huzhe.servi

java客戶呼叫webservice

         最近的工作是java和c++的互動,利用的就是webservice;部落格中介紹瞭如何利用java生成webservice,這篇部落格接著說如何利用java呼叫webservice。 

Java客戶呼叫WebService介面

Java呼叫webservice介面,基本套路都是相同的,非常簡單,我這裡使用的是axis包呼叫webservice. 首先引入標頭檔案 import javax.xml.namespace.QName; import org.apache.axis.client.Call

Java與WCF互動(一 Java客戶呼叫WCF服務

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

java客戶呼叫zookeeper

1、引入pom依賴 <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</vers

如何在Java客戶呼叫RESTful服務

在這個例子中,我們將看到如何使用java.net包實用工具,建立一個訪問REST服務RESTful的客戶端。當然這不是建立一個RESTful客戶端最簡單的方法,因為你必須自己讀取伺服器端的響應,以及Json和Java物件的轉換。 請求Get public class JavaNetURLRESTFulCl

Elasticsearch搜尋引擎第十四篇-Java客戶呼叫

文章目錄 ES支援多種程式語言客戶端 ES 提供的客戶端連線方式 Java REST Client Java Low Level REST Client Java High Level REST Client(常用) J

java客戶呼叫印表機

這種方式的問題就是 你的專案如果打包部署到雲服務上面  那就直接gg了 樓主的問題環境是:pdf內容已經在後臺用itextpdf已經畫好了,所以我想要達到的目的僅僅就是在瀏覽器端呼叫印表機直接列印就好了 在這中間嘗試了一些js外掛 但是都需要在頁面重新畫,但是我已經在

使用java客戶呼叫redis

Redis支援很多程式語言的客戶端,有C、C#、C++、Clojure、Common Lisp、Erlang、Go、Lua、Objective-C、PHP、Ruby、Scala,甚至更時髦的Node.js,當然,更少不了Java的客戶端支援。Redis官方列出的Java客戶端也有少,有Jedis、JRedi

利用wsdl地址生成java客戶呼叫類並實現動態配置的方法

前言:        有時,我們經常要和一些外部系統對接,如果是HTTP介面還好,直接用apache的HttpClient工具類呼叫即可。而如果對方系統是Webservice,則比較麻煩,本文主要講解如何用對方的wsdl地址生成java客戶端呼叫類並且動態配置訪問地址並在ja

java httpclient作為客戶呼叫webservice

轉載連結:httpclient作為客戶端呼叫webservice 1.xml SSOAP 1.1 The following is a sample SOAP 1.1 request and response. The placeholders shown

java客戶動態呼叫webservice服務

      之前呼叫webservice服務一直用jdk或者eclipse快速生成客戶端程式碼,這種方式實現起來也比較容易,據說這種方法執行效率也是最好的(動態呼叫也會動態生成客戶端程式碼)。但是我最近在專案發現這種方式存在一個嚴重的弊端,那就是當服務端有修改或變動,客戶端

webservice服務釋出和客戶呼叫

1.服務端和客戶端增加Maven依賴包,如下 <!-- cxf方式webservice服務 --> <dependency>             <group

webService 根據wsdl地址生成java客戶程式碼

1、配置java環境變數 JAVA_HOME,classpath,path都要設定 2、cmd 開啟命令視窗  執行  wsimport -s E: -p com.zrt.portal.replay ht

關於webservice的三種java客戶對接方法

第一次寫文章,所以裡邊會有些措辭或者描述不清楚的問題,請見諒 首先webservice大家肯定已經耳熟能詳了,而且webservice屬於比較古老的技術,但一些比較老的公司,由於架構的比較早,而且經歷數次迭代,人員更替,舊的技術很難優化,所以難免會遇到對接webservic

客戶呼叫webservice的xfie和aixs2用法

第一種: xfire: public String test1(){ // SoapController(客戶端自己定義的介面) 為服務端暴露出來的方法,方法名和引數必須和服務端的匹配 Service srvcModel = new Ob

Java架構學習(四十一)SpringCloud&基礎回顧&使用Fegin客戶呼叫&服務雪崩效應產生原因&Jmeter模擬服務雪崩效應&解決雪崩效應辦法&Hystrix解決雪崩效應&相關面試

前置知識 SpringCloud 是微服務解決框架,主要應用在RPC遠端呼叫。 2、裡面集成了Eureka註冊中心、Ribbon負載均衡客戶端、Zuul介面閘道器 分散式配置中心。 3、SpringCloud客戶端呼叫工具、rest、fegin。 4、Spri

webservice java客戶設定超時時間

//webservice例項 moreLikeThisHBaseWebServiceServiceStub = new MoreLikeThisHBaseWebServiceServiceStub(url); //設定超時時間 Options options = moreLikeThisHBaseW