はじめに
自己証明書の有効期間の終了日は、最大何時まで設定できるのでしょうか。。
MuleSoftなどシステム間の連携をする際に証明書を利用することが多くなりました。
外部に公開しているAPIはSSL証明書を利用しますが、JWT署名やクライアント認証など閉じられた範囲で証明書を利用する場合、自己証明書を利用することが多いいのではないでしょうか?
検証の目的
Oracleのkeytoolのページでは以下の事が書かれています。
"有効期間: 各証明書は、限られた期間のみ有効になります。この期間は開始の日時と終了の日時によって指定され、数秒の短い期間から100年という長期にわたることもあります。"
Oracle:Keytoolマニュアル引用
では、いったい有効期間は最大いつまで有効なのでしょうか?
今回の検証は自己証明書の有効期間の終了日の最大を調査しました。
結論
検証方法
下記のコマンドを実行して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
日数を指定しない場合
最後に
結果はほぞ想定内でしたが、証明書なので10年や100年といった制限がかけられていると思っていました。システム的な制限のみだったので驚きでした。
有効期間は要件のサブ的なお話なので、お客様との会話の中でこのような話があった場合は「さらっ」と確認出来たらいいですね。では!