Akka-HTTPサーバーはhttpsをサポートします

  1. 最初にHTTPSのデジタル証明書ファイル(公式証明書...)を取得します
  2. HTTPSインスタンスを構成します。具体的なコードは次のとおりです。
import java.io.InputStream 
import java.security。{SecureRandom、KeyStore} 
import javax.net.ssl。{SSLContext、TrustManagerFactory、KeyManagerFactory} 

import akka.actor.ActorSystem 
import akka.http.scaladsl.server。{Route、Directives} 
import akka.http.scaladsl。{ConnectionContext、HttpsConnectionContext、Http} 
import akka.stream.ActorMaterializer 
import com.typesafe.sslconfig.akka.AkkaSSLConfig 
暗黙の val system = ActorSystem()
 暗黙の val mat = ActorMaterializer()
 暗黙の valディスパッチャー= システム。ディスパッチャー

// 手動HTTPS設定

valパスワード:Array [Char] =" change me " .toCharArray // パスワードをコードに保存せず、安全な場所から読み取る!

val ks:KeyStore = KeyStore.getInstance(" PKCS12 " 
val keystore:InputStream = getClass.getClassLoader.getResourceAsStream(" server.p12 " 
//数字证书是固定的p12文件格式 require(keystore
!= null" キーストアが必要!" ks.load(keystore、password) val keyManagerFactory:KeyManagerFactory = KeyManagerFactory.getInstance(" SunX509 " keyManagerFactory.init(ks、password) val tmf:TrustManagerFactory = TrustManagerFactory.getInstance(" SunX509 " tmf.init(ks) val sslContext:SSLContext = SSLContext.getInstance(" TLS " sslContext.init(keyManagerFactory.getKeyManagers、tmf。 getTrustManagers、新しいSecureRandom) val https:HttpsConnectionContext = ConnectionContext.https(sslContext)

    3.ただし、公式の証明書は受け入れられません。厳しい要件があります 

  • 対応するドメイン名の証明書(* .a.com証明書はsbcomのサーバーに適用できません。証明書エラーの問題、このサイトの安全でない結果、さらにはデジタル証明書の開示につながる可能性があります)
  • 厳格なp12ドキュメント証明書 

   4.サーバーサーバーはhttpsとhttpの両方を許可できますが、2つの方法は同じアドレスにできないため、一緒に機能し、エラーが報告されます。

          サーバーでhttpとhttpsを同時に実行する必要がある場合は、2つのポートアドレスを準備する必要があります。

       つまり、単一のアプリケーションでHTTPサーバーとHTTPSサーバーを実行する場合、メソッドを2回呼び出すことができますbind...。1つはHTTPS用で、もう1つはHTTP用です。

      具体的なコードは次のとおりです。

上記の2のhttpsの代用
 も必要です// 次のように同じアプリケーションでHTTPとHTTPSの両方を実行できます: 
val commonRoutes:Route = get {complete(" Hello world!" )} 
Http()。bindAndHandle(commonRoutes、" 127.0.0.1 "443、connectionContext = https)
Http()。bindAndHandle(commonRoutes、" 127.0.0.1 "80

 

おすすめ

転載: www.cnblogs.com/0205gt/p/12719408.html