有没有办法使用 http4s 库将 http 服务器更改为 https?(https://http4s.org/)
小智 5
我发现自己面临着同样的问题,但我设法解决了它,事情是这样的:
\n您需要寻找构建服务器的时机,大概是使用 BlazeServerBuilder。
\nBlazeServerBuilder 有方法“withSslContext(sslContext: SSLContext)”来启用 SSL。因此,您需要做的就是创建一个 SSLContext 对象并将其传递给服务器构建器。
\n请记住,在使用 SSL 证书之前,您可能必须使用 Java 的 keytool 实用程序将其存储在密钥库中。
\n如何使用 SSL 证书创建 SSL 上下文是另一个问题,但这里有一篇有趣的文章,介绍了从 Let\'s Encrypt 获取免费证书、将其存储在密钥库中并从 Java 应用程序使用它的过程 :让我们加密 Java 应用程序中的证书 - Ken Coenen \xe2\x80\x94 Ordina JWorks 技术博客
\n这是我用于在 Scala 中创建 SSLContext 的代码:
\nval keyStorePassword: String = your_keystore_password\nval keyManagerPassword: String = your_certificate_password\nval keyStorePath: String = your_keystore_location\n\nval keyStore = KeyStore.getInstance(KeyStore.getDefaultType)\n\nval in = new FileInputStream(keyStorePath)\nkeyStore.load(in, keyStorePassword.toCharArray)\n\nval keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm)\nkeyManagerFactory.init(keyStore, keyStorePassword.toCharArray)\n\nval trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm)\ntrustManagerFactory.init(keyStore)\n\nval sslContext = SSLContext.getInstance("TLS")\nsslContext.init(keyManagerFactory.getKeyManagers, trustManagerFactory.getTrustManagers, new SecureRandom())\nsslContext\nRun Code Online (Sandbox Code Playgroud)\n