一惫确、說(shuō)明
??筆記主要是記錄一些本人在開(kāi)發(fā)當(dāng)中的學(xué)習(xí)和使用筆記手报。筆記內(nèi)容包含一些本人覺(jué)得重要的知識(shí)點(diǎn)、本人易犯的錯(cuò)誤等改化。
??由于本人水平有限掩蛤,其中出現(xiàn)的錯(cuò)誤或者不合理的地方望各位讀者多多包含,并指出其中不合理和錯(cuò)誤的地方陈肛,以便我來(lái)修正揍鸟。謝謝!
二句旱、筆記時(shí)間
??2018年10月17日
三阳藻、簡(jiǎn)述
??本文主要講述SSLSocket的簡(jiǎn)單使用方式。
四谈撒、詳情
??SSLSocket是Socekt的加密通訊模式腥泥。本文介紹無(wú)證書(shū)實(shí)現(xiàn)SSLSocket的方式。
??第一:重寫(xiě)X509TrustManager啃匿,使信任所有證書(shū)蛔外。如下代碼:
package com.test.sys.plcd.util;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
/**
* 創(chuàng)建人: lipy
* 創(chuàng)建時(shí)間: 2018/4/23
* 修改人:lipy
* 修改時(shí)間:2018/4/23
* 修改內(nèi)容:
*
* 功能描述: 信任所有證書(shū)
*/
public class MyX509TrustManager implements X509TrustManager {
public MyX509TrustManager() throws Exception {
}
/*
* Delegate to the default trust manager.
*/
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
/*
* Delegate to the default trust manager.
*/
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
/*
* Merely pass this through.
*/
public X509Certificate[] getAcceptedIssuers() {
// return new java.security.cert.X509Certificate[0];
return null;
}
}
??第二:創(chuàng)建SSLSocket蛆楞。如下代碼:
//java
import java.io.IOException;
import java.net.UnknownHostException;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.TrustManager;
try {
TrustManager[] tm = new TrustManager[]{new MyX509TrustManager()};
SSLContext sslContext = SSLContext.getInstance("SSLv3");
sslContext.init(null, tm, new java.security.SecureRandom());
SSLSocket sslSocket = sslContext.getSocketFactory().createSocket(mHost, mPort);
} catch (UnknownHostException e) {
} catch (IOException e) {
} catch (Exception e) {
}
//kotlin
import java.io.IOException;
import java.net.UnknownHostException;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.TrustManager;
try {
val tm = arrayOf<TrustManager>(MyX509TrustManager())
val sslContext = SSLContext.getInstance("SSLv3")
sslContext.init(null, tm, java.security.SecureRandom())
val mSllSocket = sslContext.socketFactory.createSocket(mHost, mPort) as SSLSocket?
} catch (e: UnknownHostException) {
} catch (e: IOException) {
} catch (e: Exception) {
}