【问题标题】:Java SSL socket layered over existing socket SSLSocketFactory: does it require a host parameter?Java SSL 套接字在现有套接字 SSLSocketFactory 上分层:它是否需要主机参数?
【发布时间】:2021-09-10 11:46:35
【问题描述】:
【问题讨论】:
标签:
java
sockets
ssl
networking
【解决方案1】:
跟随SSLSocketFactoryImpl中的实现,它会返回新的SSLSocketImpl,在这里你可以看到下面的sn-p代码
if (peerHost == null || peerHost.isEmpty()) {
boolean useNameService =
trustNameService && conContext.sslConfig.isClientMode;
useImplicitHost(useNameService);
} else {
conContext.sslConfig.serverNames =
Utilities.addToSNIServerNameList(
conContext.sslConfig.serverNames, peerHost);
}
(注意peerHost与host参数相同)
所以我认为这里的重点是,如果您不提供主机名,则需要花费更多的精力来查找以获取主机名 - 您可以关注 useImplicitHost(useNameService) 以查看其中的逻辑万一主人失踪了