Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有SSL客户端身份验证的Java RMI:获取客户端X509证书_Java_Ssl_Rmi_X509certificate - Fatal编程技术网

带有SSL客户端身份验证的Java RMI:获取客户端X509证书

带有SSL客户端身份验证的Java RMI:获取客户端X509证书,java,ssl,rmi,x509certificate,Java,Ssl,Rmi,X509certificate,是否可以在远程服务器实现中获取对已连接客户端的x509Certificate对象的引用 重写的RMISocketFactory: RMISocketFactory.setSocketFactory( new java.rmi.server.RMISocketFactory() { ... @Override public ServerSocket createServerSocket(int port)

是否可以在远程服务器实现中获取对已连接客户端的x509Certificate对象的引用

重写的RMISocketFactory:

RMISocketFactory.setSocketFactory(
        new java.rmi.server.RMISocketFactory() {
            ...
            @Override
            public ServerSocket createServerSocket(int port)
                    throws IOException {
                SSLServerSocket socket = ...
                socket.setNeedClientAuth(true);
                return socket;
            }
        });
远程对象:

public class RMIServer extends UnicastRemoteObject implements IRMIServer {

    public RMIServer() throws RemoteException {
        super(0);
    }

    @Override
    public String foo() throws RemoteException {
        System.out.println(getClientCertificate().getSubjectDN().getName()); // something like this?
    }
}

您发现了RMI中的一个主要设计缺陷。RMI服务器实际上不可能获得客户端证书,反之亦然,因为实际上不可能知道当前调用使用的是哪个SSLSocket。他们应该提供一种附加诸如握手CompletionListener之类的东西的方法