vgk*_*ski 7 ssl http hostname ssl-certificate akka
我在客户端有一些Akka http配置问题.我正在尝试连接到不提供的服务器: - 公共签名证书 - 与主机名相对应的证书我没有关注此nginx,因此我无法更改服务器端配置.我只能改变客户端.
在对配置SSL进行了大量调查之后,我发现我需要在两个不同的级别在application.conf中配置SSL选项:
akka.ssl-config.ssl.loose.acceptAnyCertificate=true
akka.ssl-config.loose.disableHostnameVerification = true
Run Code Online (Sandbox Code Playgroud)
和
ssl-config.loose.acceptAnyCertificate=true
ssl-config.loose.disableHostnameVerification = true
Run Code Online (Sandbox Code Playgroud)
我检查过配置很好用
log-config-on-start = "on"
Run Code Online (Sandbox Code Playgroud)
问题是我仍然在akka调试级别得到错误(不是很清楚)
[ingestionApiClient-akka.actor.default-dispatcher-13] [akka://ingestionApiClient/user/StreamSupervisor-0/flow-216-1-unknown-operation] closing output
Run Code Online (Sandbox Code Playgroud)
看看wireshark我发现这是证书验证的问题
TLSv1 Record Layer: Alert (Level: Fatal, Description: Certificate Unknown)
Run Code Online (Sandbox Code Playgroud)
我想JVM配置是我所做的全部,所以我也尝试按照这种方法修改JVM SSL配置: Java SSL:如何禁用主机名验证
配置SSLContext并将其传递给akka http没问题因为我可以设置默认的HttpsContext
val sc = SSLContext.getInstance("TLS")
*...configuration...*
val customContext =HttpsContext(sc, sslParameters = Some(params))
Http().setDefaultClientHttpsContext(customHttpsContext)
Run Code Online (Sandbox Code Playgroud)
但无论如何我都找不到配置默认主机名验证程序.Http类没有任何方法Http().setDefaultHostnameVerifier
这是我如何连接到服务器
val dataIngestFlow = Http().outgoingConnectionTls(config.httpEndpointHost,config.httpEndpointPort)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?非常感谢你的帮助
我不知道您使用的是哪个版本akka,akka-http但是您是否尝试将配置字段设置akka.ssl-config.hostnameVerifierClass为接口的特定实现HostNameVerifier?
接受所有内容的最简单的验证器如下所示:
public static class AcceptAllHostNameVerifier implements HostnameVerifier {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2880 次 |
| 最近记录: |