実際にやってみたときのメモと、そもそもを理解できてなかったのでまとめためもです。
そもそもの話
SSLって何?とかは、以下参照。
【勉強メモ】SSL/TLSとhttp/httpsの違い - Qiita
前提事項
- アプリはSpringBoot(2.4.3)で実装。
- アプリサーバはAWSのEC2で稼働。
作業の流れ
- アプリサーバ上で、自己証明書を作成(keytoolコマンド利用)
- SpringのプロパティでSSL関連の設定を定義
- アプリを稼働させてhttpsでリクエスト
手順
SSL証明書の発行
$ keytool -genkeypair -alias tomcat
-storetype PKCS12 -keyalg RSA -keysize 2048
-keystore keystore -validity 3650
Re-enter new password:
What is your first and last name?
[Unknown]:
What is the name of your organizational unit?
[Unknown]:
What is the name of your organization?
[Unknown]:
What is the name of your City or Locality?
[Unknown]:
What is the name of your State or Province?
[Unknown]:
What is the two-letter country code for this unit?
[Unknown]:
Is CN= , OU= , O= , L= , ST= , C= correct?
[no]: yes
Enter key password for <tomcat>
(RETURN if same as keystore password):
Re-enter new password:
オプション | 説明 |
---|---|
-genkeypair | 公開鍵と秘密鍵の生成。mykey (デフォルト) |
-alias | 格納する新しいキーストアエントリ。 |
-storetype | インスタンスを生成するキーストアのタイプ。 (プロパティファイルの「keyStoreType」の値) |
-keyalg | 鍵生成時に使うアルゴリズム。DSA (デフォルト), RSA , DES , DESede
|
-keysize | 生成する鍵のサイズ。1024 (デフォルト) |
-keystore | キーストアの場所。デフォルトはユーザーホームディレクトリ。 |
-validity | 証明書の有効日数。90 (デフォルト) |
登録した証明書の確認
keytool
の-list
で確認できる。
$ keytool -v -list -keystore .keystore
Enter keystore password:
Keystore type: jks
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: tomcat
Creation date: Aug 3, 2021
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
Issuer: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
Serial number: xxxxxxxx
Valid from: Tue Aug 03 09:06:54 UTC 2021 until: Mon Nov 01 09:06:54 UTC 2021
Certificate fingerprints:
MD5: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
SHA1: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
SHA256: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
Signature algorithm name: SHA256withDSA
Subject Public Key Algorithm: 2048-bit DSA key
Version: 3
Extensions:
#1: ObjectId: 0.0.00.00 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: ~
0010: ~
]
]
HTTPSの有効化
application.properties
# SSL証明書を保持するキーストアへのパス(※作成したkeystoreのパス+ファイル名)
server.ssl.key-store=keystore
# キーストアにアクセスするためのパスワード
server.ssl.key-store-password=[SSL証明書作成時に設定したパスワード]
# キーストアのタイプ
server.ssl.key-store-type=PKCS12
# キーストア内のキーを識別するエイリアス
server.ssl.key-alias=tomcat
Spring Boot アプリケーションプロパティ設定一覧 - リファレンス
HTTPSでリクエスト実行
SpringBootアプリケーションを起動させて、httpsでリクエストする。