プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

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」が表示されるページにアクセス