作者:chszs,轉載需註明。
作者部落客頁:http://blog.csdn.net/chszs
在我們的開發環境中,我們為應用程式配置了自簽名的SSL認證,很顯然,我們不會為程式開發伺服器花認證的錢。所以,我們就面臨著“如何調用帶不可信SSL認證的REST Web服務”這樣的問題。
我使用Jersey REST用戶端調用REST Web服務,代碼示意如下:
作者chszs,轉載需註明。部落客頁:http://blog.csdn.net/chszs
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) {} public void checkServerTrusted(X509Certificate[] certs, String authType) {} }};SSLContext context = SSLContext.getInstance("TLS");context.init(null, trustAllCerts, new SecureRandom());HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());ClientConfig config = new DefaultClientConfig();config.getProperties().put( HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(new HostnameVerifier() { @Override public boolean verify(String s, SSLSession sslSession) { return true; } }, context));Client client = Client.create(config);client.setFollowRedirects(true);WebResource resource = client.resource("https://myserver/myws");resource.accept(MediaType.APPLICATION_JSON_TYPE);String result = resource.post(String.class);