有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从SSLSocket中提取X509Certificate[]的实例?

假设我有以下代码,它创建了一个到google.com的SSLsocket,我想查看Google的证书。如何获取javax.security.cert.X509Certificate[]的实例

import java.io.*;
import java.math.*;
import java.net.*;
import java.security.*;

import javax.net.ssl.*;
import javax.net.*;


public class MWE{
    public static void main(String[] args) throws Exception{
        SSLContext sslContext = SSLContext.getDefault();
        SocketFactory clientSocketFactory = sslContext.getSocketFactory();

        String remoteHost = "google.com";
        int remotePort = 443;
        SSLSocket socket = null;
        try {
            //Lookup the "common name" field of the certificate from the remote server:
            socket = (SSLSocket) clientSocketFactory.createSocket(remoteHost, remotePort);
            socket.setEnabledCipherSuites(socket.getSupportedCipherSuites());
            socket.startHandshake();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }

    }
}

我已经查看了涉及的每个类的文档,但是还没有找到任何包含证书的数据结构的引用


共 (1) 个答案

  1. # 1 楼答案

    X509Certificate[] c = socket.getSession().getPeerCertificateChain();