3
3

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.

keytoolで自己証明書の有効期間の最大を試してみた!

Last updated at Posted at 2020-07-17

はじめに

 自己証明書の有効期間の終了日は、最大何時まで設定できるのでしょうか。。
 MuleSoftなどシステム間の連携をする際に証明書を利用することが多くなりました。
 外部に公開しているAPIはSSL証明書を利用しますが、JWT署名やクライアント認証など閉じられた範囲で証明書を利用する場合、自己証明書を利用することが多いいのではないでしょうか?

検証の目的

 Oracleのkeytoolのページでは以下の事が書かれています。
 "有効期間: 各証明書は、限られた期間のみ有効になります。この期間は開始の日時と終了の日時によって指定され、数秒の短い期間から100年という長期にわたることもあります。"
Oracle:Keytoolマニュアル引用
 では、いったい有効期間は最大いつまで有効なのでしょうか?
 今回の検証は自己証明書の有効期間の終了日の最大を調査しました。

結論

 最大は終了日は9999/12/31でした。
image.png

検証方法

下記のコマンドを実行してJavaキーストアを作成し、証明書に変換します。
[-validity]オプションで基点の本日から有効期間の終了日までの日数を設定できます。

$keytool -genkeypair -keystore keydir/keystore_7985y.jks   -dname "CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown"  -keypass password  -storepass password  -keyalg RSA  -sigalg SHA1withRSA  -keysize 2048  -alias test -ext SAN=DNS:localhost,IP:127.0.0.1 -validity 2914436
$keytool -exportcert -keystore keydir/keystore_7985y.jks -alias test -file keydir/mykeypair_7985y.der

終了日が最大を超過した場合

キーストアーは作成できますが、証明書作成時に下記のエラーが発生します。

keytoolエラー: java.security.cert.CertificateParsingException: java.io.IOException: Parse Generalized time, invalid format

日数を指定しない場合

日付をして指定しない場合の日数は90日でした。
image.png

最後に

 結果はほぞ想定内でしたが、証明書なので10年や100年といった制限がかけられていると思っていました。システム的な制限のみだったので驚きでした。
 有効期間は要件のサブ的なお話なので、お客様との会話の中でこのような話があった場合は「さらっ」と確認出来たらいいですね。では!

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?