Springboot]https(SSL)の適用


今日はSpringBootベースのWebアプリケーションにSSLを適用する方法を学びます.
1.概要
基本的には、個別のsslが適用されない限り、作成したプロジェクトはhttp://~で開始されます.
ではhttpとhttpの違いは何でしょうか.
1-1. http vs https
1.保安
  • http: Hyper Text Transfer Trotocol
  • https: Hyper Text Transfer Trotocol Secure
  • 違いは上記の略記からも分かるように、コアは安全です.
    httpは、既存のhttpプロトコルにデータ暗号化を追加するプロトコルです.
    httpsは、対称鍵暗号化または非対称鍵暗号化によって暗号化をサポートし、ネットワーク上の第三者の間で情報を見ることができない.
    2.デフォルトポート
    httpは基本的に80ポートを使用します.
    httpsのデフォルトでは443ポートが使用されます.
    2.実施方法
    2-1. 新規プロジェクトの作成
    まず、Spring Initializerで新しいプロジェクトを作成します.
  • Spring Initializeアドレス
    https://start.spring.io

  • 2-2. keystoreの作成
    httpsを使用してsslを適用するにはkeystoreを作成する必要があります.
    作成するkeystoreファイルは、Webサイトのセキュリティを担当する重要な部分であると考えられます.
    作成したプロジェクトのルートパスで、次のコマンドを実行します.keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 4000
    コマンドが正常に動作している場合は、次のようにパスワードの入力を求めるウィンドウが表示されます.
    私たち個人が使っている部分なので、パスワードさえ覚えていれば大丈夫です.

    入力は上記の通りで、最後にyesを入力してkeystoreを表します.p 12が現在の経路から生成されていることが確認できる.
    2-3. application.属性の変更
    現在作成されているkeystoreを識別するためにspringfootプロジェクトでkeystoreを変更するだけです.
    server.port: 8084 // 개인적으로 포트를 8084로 바꿔줌 (ssl과 무관)
    
    server.ssl.key-store:keystore.p12
    server.ssl.key-store-type=PKCS12
    server.ssl.key-store-password=qwerty1!
  • server.ssl.key-store: keystore.p 12が存在するパス(デフォルトは現在のプロジェクトルート)
  • server.ssl.key-store-type:keystoreのstoretype
    前のコマンドでkeytool ~ -storetype PKCS12 ~に設定したので、PKCS 12として位置づけます.
  • server.ssl.key-store-password:以前に設定したkeystore password
  • 2-4. サーバの再起動
    sslを適用するすべての準備ができました.
    サーバーを再起動して確認します.
    IF)http://localhost:8084

    以上のように、本プロジェクトはhttpベースで実行されるため、httpアクセスを使用するとBad Request文が表示され、アクセスできません.
    IF)https://localhost:8084

    最初にこのパスを介してアクセスすると、セキュリティに関連するさまざまな文が表示されます.
    これは,我々が作成したkeystoreが簡略化されているため,警告を発すると理解できる.
    無視してページを開くと、上記SpringBootを実行すると、最初のページが表示されます.
  • 完全ソース
    https://github.com/cho876/Study/tree/master/sslStudy