我有一台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。类似地,它适用于其他端口。