1、SSLSocket Client绕过证书检查
package com.ats.ssl.socket;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class ClientWithTrustManager {
public static void connectAndSend(String trustStorePath,
String trustStorePwd, String ip, int port, String msg) throws IOException, NoSuchAlgorithmException, KeyManagementException{
SSLContext sslContext = SSLContext.getInstance("TLS");
//SSLContext sslContext = SSLContext.getInstance("SSLv3");
sslContext.init(new KeyManager[0], new TrustManager[] { new DefaultTrustManager() }, new SecureRandom());
SSLContext.setDefault(sslContext);
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
SSLSocket sslsocket = (SSLSocket) sslSocketFactory.createSocket(
"localhost", 9999);
try {
OutputStream outputstream = sslsocket.getOutputStream();
OutputStreamWriter outputstreamwriter = new OutputStreamWriter(
outputstream);
BufferedWriter bufferedwriter = new BufferedWriter(
outputstreamwriter);
bufferedwriter.write(msg);
bufferedwriter.flush();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
sslsocket.close();
}
}
private static class DefaultTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
public static void main(String[] args) throws Exception {
try {
URL url = Server.class.getClassLoader().getResource(
"myTrustStore.jks");
String jks = url.getFile();
connectAndSend(jks, "sslTestPwd", "127.0.0.1", 9999,
"This msg is from Java SSL Client :)");
} catch (Exception exception) {
exception.printStackTrace();
}
}
}