【问题标题】:How can I configure Simple Framework to require SSL client authentication?如何配置 Simple Framework 以要求 SSL 客户端身份验证?
【发布时间】:2013-06-04 21:38:35
【问题描述】:

我正在使用Simple Framework 编写 HTTP 服务器,并希望客户端提供由我的证书颁发机构签名的有效证书才能建立连接。

我编写了以下准系统服务器。如何修改此代码以要求对所有 SSL 连接进行客户端证书身份验证?

public static void main(String[] args) throws Exception {
    Container container = createContainer();

    Server server = new ContainerServer(container);
    Connection connection = new SocketConnection(server);
    SocketAddress address = new InetSocketAddress(8443);

    KeyManagerFactory km = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
    KeyStore serverKeystore = KeyStore.getInstance(KeyStore.getDefaultType());
    try(InputStream keystoreFile = new FileInputStream(SERVER_KEYSTORE_PATH)) {
        serverKeystore.load(keystoreFile, "asdfgh".toCharArray());
    }
    km.init(serverKeystore, SERVER_KS_PASSWORD.toCharArray());

    TrustManagerFactory tm = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
    KeyStore caKeystore = KeyStore.getInstance(KeyStore.getDefaultType());
    try(InputStream caCertFile = new FileInputStream(CA_CERT_PATH)) {
        caKeystore.load(caCertFile, CA_KS_PASSWORD.toCharArray());
    }
    tm.init(caKeystore);

    SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(km.getKeyManagers(), tm.getTrustManagers(), null);

    connection.connect(address, sslContext);
}

【问题讨论】:

    标签: ssl client-certificates simple-framework


    【解决方案1】:

    试试这个

    public class MyServer implements org.simpleframework.transport.Server {
    
       private Server delegateServer;
    
       public MyServer(Server delegateServer){
          this.delegateServer = delegateServer;
       }
    
       public void process(Socket socket){
         socket.getEngine().setNeedClientAuth(true);
         delegateServer.process(socket);
       }
    }
    

    【讨论】:

    • 当然!我让这种方式变得比它需要的更难。谢谢!
    • 此代码是否替换了问题代码中的容器服务器?
    猜你喜欢
    • 1970-01-01
    • 2017-04-19
    • 2014-09-15
    • 2014-11-13
    • 1970-01-01
    • 2012-11-27
    • 2014-04-23
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多