Es gibt einige Tests im akka Codebasis, die die HTTPS-Funktionalität zu testen. Sie verwenden die vordefinierten http-Kontexte, die in ExampleHttpContexts definiert sind.
Ich habe ein kleines Repo erstellt, das die Schlüssel aus dem akka-Repository verwendet (ich hoffe, es macht ihnen nichts aus) und erstellt einen minimalen https-Server mit einem selbstsignierten Zertifikat here. Fertig als ein Repo statt als ein Kern, so können Sie es einfach klonen, um zu beginnen. Hier
ist der scala Code:
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))
}
Es gibt einen Abschnitt über Server-Größe HTTPS in der Dokumentation: [Server-Side HTTPS Support] (http://doc.akka.io/docs/akka- stream-and-http-experimental/2.0.2/scala/http/low-level-server-side-api.html # serverseite-https-support) – planetenkiller
Ich empfehle, Apache oder Nginx als https-Proxy-Server zu verwenden. Es ist schneller (wegen der C++ - Implementierung) und oft aktualisiert (aufgrund der Popularität) – mgosk