次のコマンドでキーストアを作成しています。
keytool -genkey -keystore myStore.keystore -keyalg RSA -keysize 1024 -alias myAlias
有効期限が過ぎたものを生成するにはどうすればよいですか(これを使用しますか?期限切れの証明書を使用してアプリの動作をテストしたい)。
次のパラメータを使用して、keytoolコマンドを使用して期限切れの証明書を生成できます。
-開始日
-有効
有効性パラメーターは入力として日数しかかかりませんが、startdateパラメーターは、有効性が開始されたときから言及するために使用できます。startdateパラメーターへの入力の形式[yyyy/mm / dd] [HH:MM:SS]
詳細については、このリンクを参照してください http://docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html
以下のopenssl
コマンドを使用して、証明書に署名するための公式プロセスを模倣した期限切れの証明書を生成できます。
注:Linuxでのみテストされています。
#Create CA key, which means you are now the CA using root.key and root.cer to sign certificates
openssl genrsa 4096 > root.key
#Create CA certificate expired ten years later
openssl req -new -x509 -key root.key -out root.cer -days 3650
#Generates your own private key
openssl genrsa 4096 > server.key
#Build a Certificate Signing Request
openssl req -new -key server.key -out server.csr
#sign the certificate and make the certificate expired 1 day ago. Pay attention to the negative -days argument( not working on MacOS )
openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -CAcreateserial -out server.cer -days -1
openssl x509 -noout -text -in server.cer
Validity
Not Before: Mar 7 09:11:13 2019 GMT
Not After : Mar 6 09:11:13 2019 GMT
java keytoolを使用すると、キーストア証明書の最小有効期間は1日です。
-startdate
編集: @shyam0191が答えたようにオプションがあるようです。
したがって、過去の日付の証明書を生成することはできません(修正:実際に可能です) 。次のコマンドを使用することをお勧めします。これにより、有効期間が1日の証明書が生成され、翌日、それを使用してテストできるようになります。
keytool -selfcert -alias Test -genkey -keystore myStore.keystore -keyalg RSA -validity 1
または、@ shyam0191の回答を使用すると、最終的に同じ結果になります(ただし、より早くなります)。