SpringBoot SSL/TLS接続設定
SpringBootで作成したWebアプリケーションをSSL/TLS接続、いわゆるHTTPSで接続する方法
【SSL/TLS接続設定の流れ】
①keytoolコマンドで秘密鍵・公開鍵の生成
②秘密鍵と公開鍵を格納
③HTTPS有効化
④Webアプリを起動して確認
【前提条件】
予めWebアプリを作成しておくこと
今回はアクセスすると「Hello World」を返すWebアプリを作成している
@RestController
public class SampleController {
@GetMapping
String index() {
return "Hello World";
}
}
①keytoolコマンドで秘密鍵・公開鍵の生成
PKCS12形式で作成する
keytool -genkeypair -storetype PKCS12 -keystore mykeystore.p12 -alias mykeypair -v -keyalg RSA -keysize 2048 -validity 36500
ちなみにJKS形式で作成する場合は下記コマンドを実行
keytool -genkeypair -keystore mykeystore.jks -alias mykeypair -v -keyalg RSA -keysize 2048 -validity 36500
※既存のJKS形式キーをPKCS12形式に変換する場合は下記コマンドを実行
keytool -importkeystore -srckeystore mykeystore.jks -destkeystore mykeystore.p12 -deststoretype pkcs12
【参考】keytoolコマンドのオプション
genkeypair:キー・ペアを生成
storetype:キーストア・タイプ
keystore:キーストア名
alias:keystore内部におけるkeypairの名称
v:詳細出力
keyalg:公開鍵暗号のアルゴリズム
keysize:鍵のビット・サイズ
validity:証明書の有効日数
importkeystore:別のキーストアからエントリをインポート
srckeystore:参照元のキーストア名
destkeystore:対象のキーストア名
deststoretype type:対象のキーストアのタイプ
exportcert:証明書エクスポート
keytoolコマンドの詳細はこちら
※生成された秘密鍵・公開鍵は下記コマンドで確認可能
keytool -list -v -keystore [キーストア名]
②秘密鍵と公開鍵を格納
resourcesフォルダ配下に「keystore」フォルダを作成し、①で作成した鍵を格納する
③HTTPS有効化
application.propertiesにポート番号や①で作成した鍵のパスや名前等を設定する
#ポート番号
server.port=8443
#プロトコル
server.ssl.protocol=TLSv1.2
#キーストア・タイプ
server.ssl.key-store-type=PKCS12
#鍵の格納先
server.ssl.key-store=classpath:keystore/mykeystore.p12
#鍵のパスワード
server.ssl.key-store-password=000000
#keystore内部におけるkeypairの名称
server.ssl.key-alias=mykeypair
④Webアプリを起動して確認
予め作成したWebアプリを起動し、下記赤枠を押下して「Hello World」が表示されるページにアクセス