1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【メモ】SpringアプリケーションでHTTPSを有効化:自己証明書を作成

Posted at

実際にやってみたときのメモと、そもそもを理解できてなかったのでまとめためもです。

そもそもの話

SSLって何?とかは、以下参照。
【勉強メモ】SSL/TLSとhttp/httpsの違い - Qiita

前提事項

  • アプリはSpringBoot(2.4.3)で実装。
  • アプリサーバはAWSのEC2で稼働。

作業の流れ

  1. アプリサーバ上で、自己証明書を作成(keytoolコマンド利用)
  2. SpringのプロパティでSSL関連の設定を定義
  3. アプリを稼働させて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でリクエストする。

参考サイト

Spring bootでSSL(HTTPS)を有効にする - Qiita

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?