1. 程式人生 > >java https安全傳輸

java https安全傳輸

HttpsURLConnection 擴充套件 HttpURLConnection,支援各種特定於 https 功能。此類使用 HostnameVerifier 和 SSLSocketFactory。為這兩個類都定義了預設實現。但是,可以根據每個類(靜態的)或每個例項來替換該實現。所有新 HttpsURLConnection 例項在建立時將被分配“預設的”靜態值,通過在連線前呼叫每個例項適當的 set 方法可以重寫這些值

在URL前加https://字首表明是用SSL加密的。 你的電腦與伺服器之間收發的資訊傳輸將更加安全。

Web伺服器啟用SSL需要獲得一個伺服器證書並將該證書與要使用SSL的伺服器繫結。
http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。http的連線很簡單,是無狀態的,...

HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議
要比http協議安全
import java.io.*;
import java.net.*;
import java.security.*;
import java.security.cert.*;
import javax.net.ssl.*;

public class HttpsURLConnectionTest {

    private String url = "
https://127.0.0.1:8080/TestWeb/version
"; private myX509TrustManager xtm = new myX509TrustManager(); private myHostnameVerifier hnv = new myHostnameVerifier(); public HttpsURLConnectionTest() { SSLContext sslContext = null; try { sslContext = SSLContext.getInstance("TLS"); //或SSL X509TrustManager[] xtmArray = new X509TrustManager[] {xtm}; sslContext.init(null, xtmArray, new java.security.SecureRandom()); } catch (GeneralSecurityException e) { e.printStackTrace(); } if (sslContext != null) { HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); } HttpsURLConnection.setDefaultHostnameVerifier(hnv); } public void run() { HttpsURLConnection urlCon = null; try { urlCon = (HttpsURLConnection)(new URL(url)).openConnection(); urlCon.setDoOutput(true); urlCon.setRequestMethod("POST"); urlCon.setRequestProperty("Content-Length", "1024"); urlCon.setUseCaches(false); urlCon.setDoInput(true); urlCon.getOutputStream().write("Data={\"type\":\"P003\"}".getBytes("gbk")); urlCon.getOutputStream().flush(); urlCon.getOutputStream().close(); BufferedReader in = new BufferedReader(new InputStreamReader(urlCon.getInputStream())); String line; while ((line = in.readLine()) != null) { System.out.println(line); } // 增加自己的程式碼 } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { HttpsURLConnectionTest httpsTest = new HttpsURLConnectionTest(); httpsTest.run(); } } /** *//** * 重寫三個方法 * @author Administrator * */ class myX509TrustManager implements X509TrustManager { public void checkClientTrusted(X509Certificate[] chain, String authType) { } public void checkServerTrusted(X509Certificate[] chain, String authType) { System.out.println("cert: " + chain[0].toString() + ", authType: " + authType); } public X509Certificate[] getAcceptedIssuers() { return null; } } /** *//** * 重寫一個方法 * @author Administrator * */ class myHostnameVerifier implements HostnameVerifier { public boolean verify(String hostname, SSLSession session) { System.out.println("Warning: URL Host: " + hostname + " vs. " + session.getPeerHost()); return true; } }