gpt4 book ai didi

scala - Akka Http HTTPS 配置导致 Chrome 返回 ERR_SSL_VERSION_OR_CIPHER_MISMATCH

转载 作者:太空宇宙 更新时间:2023-11-03 14:48:53 25 4
gpt4 key购买 nike

我正在尝试使用自签名证书在我的 akka-http 服务器(本地主机)上建立安全连接。我没有成功。

关于 ssl 的 Akka-http 文档有点含糊。我已尝试从各地收集点点滴滴的信息,但仍然无法正常工作。

我创建了一个如下所示的 ssl 特征:

 trait MySslConfiguration {

def serverContext: HttpsContext = {
val password = "password".toCharArray
val context = SSLContext.getInstance("TLSv1.2")
val keyStore = KeyStore.getInstance("jks")
val keyStoreResource = "/scruples_keystore.jks"
val keyManagerFactory = KeyManagerFactory.getInstance("SunX509")
val trustManagerFactory = TrustManagerFactory.getInstance("SunX509")
keyStore.load(getClass.getClassLoader.getResourceAsStream(keyStoreResource), password)
keyManagerFactory.init(keyStore, password)
trustManagerFactory.init(keyStore)
context.init(keyManagerFactory.getKeyManagers, trustManagerFactory.getManagers, new SecureRandom())
val sslParams = context.getDefaultSSLParameters
sslParams.setEndpointIdentificationAlgorithm("HTTPS")
HttpsContext(sslContext = context
sslParameters = Some(sslParams),
enabledProtocols = Some(List("TLSv1.2", "TLSv1.1", "TLSv1")))
}

}

我将特征添加到我的服务器启动中,如下所示:

object Main extends App with Core with RestInterface with MySslConfiguration {
val metricRegistry = new com.codahale.metrics.MetricRegistry()
override implicit val injector = GlobalInjector.getInjector
override implicit val system: ActorSystem = injector.instance[ActorSystem]

override def config: Config = injector.instance[Config]

override implicit def executor: ExecutionContextExecutor = system.dispatcher

override val logger: LoggingAdapter = Logging(system, getClass)
override implicit val materializer: Materializer = ActorMaterializer()


val routes = allRoutes

Http().bindAndHandle(routes, config.getString("http.host"), config.getInt("http.port"), httpsContext = Some(serverContext))

自签名的 jks keystore 创建如下:

keytool -genkey -keyalg RSA -keysize 2048 -keystore scruples_keystore.jks -alias myalias

有人可以帮忙吗?

我做错了什么?我确定存在配置问题,但似乎无法弄清楚。

另一个问题是,如果我使用来自 CA 的适当证书,会有什么变化?

非常感谢

最佳答案

事实证明,将 keystore 位置指定为 val keyStoreResource = "/scruples_keystore.jks" 是问题所在。将 keystore 位置指定为 val keyStoreResource = "scruples_keystore" 就成功了,一切都恢复正常了......

关于scala - Akka Http HTTPS 配置导致 Chrome 返回 ERR_SSL_VERSION_OR_CIPHER_MISMATCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36230332/

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