Akka HTTP 2.0 使用 SSL (HTTPS)
Akka HTTP 2.0 to use SSL (HTTPS)
我正在尝试将自签名证书添加到我的配置中,以使我的 Web 服务能够通过 SSL 提供内容,但我没有成功。
这是我当前的配置
ssl {
jksKeystore = "localhost.p12"
password = "changeit"
}
关于我想启动 HTTPS 服务器的任何想法?
我的项目正在使用 akka 2.0 和 scala
akka 代码库中有一些测试 https 功能的测试。他们使用 ExampleHttpContexts.
中定义的预定义 http 上下文
我创建了一个使用 akka 存储库中的密钥的小型存储库(我希望他们不会介意)并使用 self-signed 证书 here 创建了一个最小的 https 服务器。作为回购而不是作为要点完成,因此您只需克隆它即可开始。
这是 Scala 代码:
package httpsserver
import java.security.{SecureRandom, KeyStore}
import javax.net.ssl.{KeyManagerFactory, SSLContext}
import akka.actor.ActorSystem
import akka.http.scaladsl.{HttpsContext, Http}
import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.Route
import akka.stream.ActorMaterializer
object Server extends App {
val serverContext: HttpsContext = {
val password = "abcdef".toCharArray
val context = SSLContext.getInstance("TLS")
val ks = KeyStore.getInstance("PKCS12")
ks.load(getClass.getClassLoader.getResourceAsStream("keys/server.p12"), password)
val keyManagerFactory = KeyManagerFactory.getInstance("SunX509")
keyManagerFactory.init(ks, password)
context.init(keyManagerFactory.getKeyManagers, null, new SecureRandom)
// start up the web server
HttpsContext(context)
}
implicit val system = ActorSystem("server")
implicit val materializer = ActorMaterializer()
import system._
val route = Route(complete("ok"))
Http().bindAndHandle(route, interface = "0.0.0.0", port = 8081, httpsContext = Some(serverContext))
}
我正在尝试将自签名证书添加到我的配置中,以使我的 Web 服务能够通过 SSL 提供内容,但我没有成功。
这是我当前的配置
ssl {
jksKeystore = "localhost.p12"
password = "changeit"
}
关于我想启动 HTTPS 服务器的任何想法?
我的项目正在使用 akka 2.0 和 scala
akka 代码库中有一些测试 https 功能的测试。他们使用 ExampleHttpContexts.
中定义的预定义 http 上下文我创建了一个使用 akka 存储库中的密钥的小型存储库(我希望他们不会介意)并使用 self-signed 证书 here 创建了一个最小的 https 服务器。作为回购而不是作为要点完成,因此您只需克隆它即可开始。
这是 Scala 代码:
package httpsserver
import java.security.{SecureRandom, KeyStore}
import javax.net.ssl.{KeyManagerFactory, SSLContext}
import akka.actor.ActorSystem
import akka.http.scaladsl.{HttpsContext, Http}
import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.Route
import akka.stream.ActorMaterializer
object Server extends App {
val serverContext: HttpsContext = {
val password = "abcdef".toCharArray
val context = SSLContext.getInstance("TLS")
val ks = KeyStore.getInstance("PKCS12")
ks.load(getClass.getClassLoader.getResourceAsStream("keys/server.p12"), password)
val keyManagerFactory = KeyManagerFactory.getInstance("SunX509")
keyManagerFactory.init(ks, password)
context.init(keyManagerFactory.getKeyManagers, null, new SecureRandom)
// start up the web server
HttpsContext(context)
}
implicit val system = ActorSystem("server")
implicit val materializer = ActorMaterializer()
import system._
val route = Route(complete("ok"))
Http().bindAndHandle(route, interface = "0.0.0.0", port = 8081, httpsContext = Some(serverContext))
}