gpt4 book ai didi

http - 主机名验证和证书验证的 akka http SSLConfig 问题

转载 作者:可可西里 更新时间:2023-11-01 15:14:55 28 4
gpt4 key购买 nike

我在客户端的 Akka http 配置方面遇到了一些问题。我正在尝试连接到不提供的服务器:- 公开签署的证书- 与主机名对应的证书我没有这个 nginx 的手,所以我无法更改服务器端配置。我只能改变客户端。

在对配置 SSL 进行了大量调查之后,我发现我需要在 application.conf 中的两个不同级别配置 SSL 选项:

akka.ssl-config.ssl.loose.acceptAnyCertificate=true
akka.ssl-config.loose.disableHostnameVerification = true

ssl-config.loose.acceptAnyCertificate=true
ssl-config.loose.disableHostnameVerification = true

我已经检查过配置没问题

log-config-on-start = "on" 

问题是我在akka调试级别仍然报错(不是很清楚)

[ingestionApiClient-akka.actor.default-dispatcher-13] [akka://ingestionApiClient/user/StreamSupervisor-0/flow-216-1-unknown-operation] closing output

查看wireshark我发现这是证书验证的问题

TLSv1 Record Layer: Alert (Level: Fatal, Description: Certificate Unknown)

我想 JVM 配置覆盖了我所做的一切,所以我也尝试按照这种方法修改 JVM SSL 配置: Java SSL: how to disable hostname verification

配置 SSLContext 并将其传递给 akka http 没问题,因为我可以使用

设置默认的 HttpsContext
val sc = SSLContext.getInstance("TLS")
*...configuration...*
val customContext =HttpsContext(sc, sslParameters = Some(params))
Http().setDefaultClientHttpsContext(customHttpsContext)

但无论如何我都找不到配置默认主机名验证程序的方法。 Http 类没有任何类似 Http().setDefaultHostnameVerifier

的方法

这是我连接到服务器的方式

val dataIngestFlow = Http().outgoingConnectionTls(config.httpEndpointHost,config.httpEndpointPort)

我怎样才能做到这一点?非常感谢您的帮助

最佳答案

我不知道你使用的是哪个版本的 akkaakka-http 但你是否尝试过设置配置字段 akka.ssl-config. hostnameVerifierClassHostNameVerifier 接口(interface)的具体实现?

接受所有内容的最简单的验证器如下所示:

public static class AcceptAllHostNameVerifier implements HostnameVerifier {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
}

关于http - 主机名验证和证书验证的 akka http SSLConfig 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34934336/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com