Как упоминает Рюдигер, сначала необходимо получить сертификат. Я хранил мой в KeyStore, и это был единственный способ получить akka-http, чтобы загрузить его.
Если у вас есть сертификат, вам нужно настроить контекст Https:
def getSSLContext() : HttpsConnectionContext = {
val ks: KeyStore = KeyStore.getInstance("JKS")
val keystorePath = config.getString("keystore.path")
val keystorePassword = config.getString("keystore.password").toCharArray
val keystore: InputStream = Files.newInputStream(Paths.get(keystorePath))
require(keystore != null, "Keystore required!")
ks.load(keystore, keystorePassword)
val keyManagerFactory: KeyManagerFactory = KeyManagerFactory.getInstance("SunX509")
keyManagerFactory.init(ks, keystorePassword)
val tmf: TrustManagerFactory = TrustManagerFactory.getInstance("SunX509")
tmf.init(ks)
val sslContext: SSLContext = SSLContext.getInstance("TLS")
sslContext.init(keyManagerFactory.getKeyManagers, tmf.getTrustManagers, new SecureRandom)
ConnectionContext.https(sslContext)
}
Затем установите его в качестве значения по умолчанию:
Http().setDefaultServerHttpContext(getSSLContext())
Как только это будет сделано, вы можете связать свой маршрут и начать обработка запросов:
val bindingFuture = Http().bindAndHandle(api.route, bindAddress ,port=bindPort)
bindingFuture.onComplete(println)