web-dev-qa-db-ja.com

Javaキーストアでの証明書の有効期限の確認

私のJavaアプリケーションは、Active Directoryサーバーとのssl接続で使用される証明書を持っているキーストアファイルを使用しています。有効期限を確認し、閉じる場合はユーザーにプロンプ​​トを表示する必要があります有効期限が切れます。アプリケーションの起動中にそれを行う必要があります。私の考えは、外部プログラム:keytoolを使用してキーストア内の特定の証明書に関する情報を表示し、keytoolが出力する文字列に対して解析操作を実行して、この検証日を見つけることです。

次に、特定のkeytoolコマンドの出力を示します。

Owner:
Issuer: CN=CPD Root CA, DC=cpd, DC=local<br>
Serial number: 39e8d1610002000000cb
<br>Valid from: Wed Feb 22 21:36:31 CET 2012 until: Thu Feb 21 21:36:31 CET 2013
Certificate fingerprints: <br>
         MD5:  82:46:8B:DB:BC:5C:64:21:84:BB:68:E3:4B:D4:35:70<br>
         SHA1: 35:52:CA:F2:11:66:1E:50:63:BC:53:A5:50:C1:F0:1E:62:81:BC:3F<br>
         Signature algorithm name: SHA1withRSA

日付がどの形式で表示されるかわからないため、解析日付に問題があります。

Javaキーストアファイルに含まれている証明書の有効期限を確認する簡単な方法はありますか?

20
lou_cypher

EJPの指示に感謝します。ここに私が思いついたブロックがあります。

    try {
        KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
        keystore.load(new FileInputStream("keystoreLocation"), "keystorePassword".toCharArray());
        Enumeration<String> aliases = keystore.aliases();
        while(aliases.hasMoreElements()){
            String alias = aliases.nextElement();
            if(keystore.getCertificate(alias).getType().equals("X.509")){
                System.out.println(alias + " expires " + ((X509Certificate) keystore.getCertificate(alias)).getNotAfter());
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
22
WillieT

Java.security.Keystoreクラスを使用してキーストアをロードし、その内容を列挙して、各証明書の有効期限を確認します。

9
user207421