ssl - 如何配置 Simple Framework 以要求 SSL 客户端身份验证?

标签 ssl client-certificates simple-framework

我正在使用 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);
}

最佳答案

试试这个

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);
   }
}

关于ssl - 如何配置 Simple Framework 以要求 SSL 客户端身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16927938/

相关文章:

ssl - 当我使用 APR 并且并非所有 Web 部署都使用 CLIENT-CERT 身份验证时,如何在 JBoss 5.1.0.GA 中获得客户端证书身份验证?

java - 如何从 Tomcat 的特定主机获取签名者证书?

java - 如何将空字符串序列化为单个空标记?

android - Chrome 报告来自不同计算机的同一站点的 2 种不同的 SSL 挂锁状态,可能受到感染?

c# - 在 Visual Studio 中启用 SSL

java - Jboss 4.2.3 迁移到 Jboss 7 EAP、数据源和安全

typescript - 如何为 loopback4 添加自签名 ssl 证书?

go - 如何在Golang中测试https服务器是否支持我的客户端证书

java - 使用 XML 简单框架反序列化包含 CDATA 的元素列表

java - 使用 SimpleXML 解析混合列表