使用 http4s 从 http 更改为 https

Pab*_*dez 2 https http http4s

有没有办法使用 http4s 库将 http 服务器更改为 https?(https://http4s.org/

小智 5

我发现自己面临着同样的问题,但我设法解决了它,事情是这样的:

\n
    \n
  1. 您需要寻找构建服务器的时机,大概是使用 BlazeServerBuilder。

    \n
  2. \n
  3. BlazeServerBuilder 有方法“withSslContext(sslContext: SSLContext)”来启用 SSL。因此,您需要做的就是创建一个 SSLContext 对象并将其传递给服务器构建器。

    \n
  4. \n
\n

请记住,在使用 SSL 证书之前,您可能必须使用 Java 的 keytool 实用程序将其存储在密钥库中。

\n

SSL 上下文和 SSL 证书

\n

如何使用 SSL 证书创建 SSL 上下文是另一个问题,但这里有一篇有趣的文章,介绍了从 Let\'s Encrypt 获取免费证书、将其存储在密钥库中并从 Java 应用程序使用它的过程 :让我们加密 Java 应用程序中的证书 - Ken Coenen \xe2\x80\x94 Ordina JWorks 技术博客

\n

这是我用于在 Scala 中创建 SSLContext 的代码:

\n
val 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\n
Run Code Online (Sandbox Code Playgroud)\n