我有一台Jetty服务器,在这里我要打开多个SSL端口,并设置SslContextFactory,将其指向我的自定义密钥库,在该库中我具有所有SSL端口的证书。

public static SslContextFactory getCustomSSLContextFactory() throws IOException {
    KeyStoreInfo keyStoreInfo = KeyStoreInfo.getInstance();
    SslContextFactory sslContextFactory = new SslContextFactory(mycustomkeystorepath);
    sslContextFactory.setKeyStorePassword(mykeystorepassword);
    sslContextFactory.setKeyStoreType(keystoretype);
    sslContextFactory.setTrustStorePath(defaultcatruststore);
    sslContextFactory.setTrustStorePassword(password);
    sslContextFactory.setTrustStoreType(truststoretype);
    sslContextFactory.setNeedClientAuth(true);
    return sslContextFactory;
}


我在ServerConnector SslContextFactory中设置此SslConnectionFactory。我有多个ServerConnector,并且都具有相同的SslContextFactory

我的问题是,自定义密钥存储区中有多个PKI证书和私钥。 SslConnectionFactory如何知道哪个PKI证书和私钥属于哪个SSL端口?

最佳答案

SSL证书与服务器的某些域名/主机名+端口有关。因此,证书中存在域/主机名+端口数据。建立连接时,SslConnectionFactory将查看特定域/主机名+端口的证书是否存在,如果存在,它将使用该证书和与之相关的私钥进行握手。

请记住,默认情况下,域名的SSL证书知道该端口为443。类似地,它适用于其他端口。

10-08 09:33