在 http4k 中使用 SSL 配置 Helidon

问题描述 投票:0回答:1

我正在尝试在 http4k 中使用双向 SSL 配置 Helidon Webserver。

以下是我的配置

class HelidonSsl(val port: Int = 8305) : ServerConfig {
override val stopMode = ServerConfig.StopMode.Immediate

override fun toServer(http: HttpHandler): Http4kServer {
    val keystorePath = "keystore/ssl.keystore"
    val keystorePassword = "changeit"

    // Set up SSL/TLS configuration if keystore and truststore are present
    val keyStoreKey = Keys.builder()
        .keystore(
            KeystoreKeys.builder()
                .keystore(Resource.create(keystorePath))
                .passphrase(keystorePassword)
                .trustStore(true)
                .build()
        )
        .build()

    val tlsConfig = TlsConfig.builder()
        .trustAll(true)
        .privateKey(keyStoreKey)
        .clientAuth(TlsClientAuth.OPTIONAL)
        .build()

    val server = WebServer.builder()
        .tls(tlsConfig)
        .port(port)
        .build()

    return object : Http4kServer {
        override fun start() = apply { server.start() }
        override fun stop() = apply { server.stop() }
        override fun port(): Int = if (port != 0) port else server.port()
    }
}

服务器启动,但建立连接时,我收到以下错误堆栈:

我已经查过了:

  • keystore - 包含自签名证书,使用 RSA 和密码很好 - 使用与 Jetty 相同的密钥库并且工作正常
  • 不同的配置选项
  • 调试显示密钥管理器设置为 DummyKeyManager 实例,这似乎会导致错误,但不确定如何修复该问题

enter image description here

kotlin ssl webserver mtls http4k
1个回答
0
投票

如果这是针对 Helidon 4,我建议您首先查看 https://github.com/helidon-io/helidon/tree/main/examples/webserver/mutual-tls 中的 MTLS 示例作为指导。对于 Helidon 3,它位于 https://github.com/helidon-io/helidon-examples/tree/helidon-3.x/examples/webserver/mutual-tls

© www.soinside.com 2019 - 2024. All rights reserved.