java SSLSocket 发送 https请求

说明

创建 SSLSocket 有一些不同,建立连接后,常用方法与 Socket 类似

创建 SSLSocket

SSLSocket s = (SSLSocket)SSLSocketFactory.getDefault().createSocket();

然后连接:

SocketAddress sa = new InetSocketAddress(host,port);
s.connect(sa);

创建并建立连接

SSLSocket s = (SSLSocket)SSLSocketFactory.getDefault().createSocket(host,port);

SSLContext

安全套接字协议的实现核心类,可以指定 证书、信任管理器、SecureRandom

实现管理器类

CA机构颁发的证书或者权威机构颁发的证书 都是直接信任的,直接使用即可,不需要再重写任何代码,所以下面的代码一般不用,这里只是举例说明

class X509TrustManagerImpl implements X509TrustManager {

    @Override
    public X509Certificate[] getAcceptedIssuers() {
        return null;
    }

    @Override
    public void checkServerTrusted(X509Certificate[] chain,
            String authType) throws CertificateException {
    }

    @Override
    public void checkClientTrusted(X509Certificate[] chain,
            String authType) throws CertificateException {
    }
};
X509TrustManager x509m = new X509TrustManagerImpl();
SSLContext context = SSLContext.getInstance("SSL");
context.init(null,
        new TrustManager[] { x509m },
        new SecureRandom());
SSLSocket s = (SSLSocket)context.getSocketFactory().createSocket();

参考:
https://blog.csdn.net/qq_34743935/article/details/115913093
https://blog.csdn.net/a351945755/article/details/22788855