2017-04-17 2 views
1

私は証明書を読むために以下の方法を使用しています。CA証明書を読み込めませんでした(GetCertificateChainがフルチェーンを返さない)

KeyStore ks = KeyStore.getInstance("pkcs12"); 
    ks.load(in, password); 
    String alias = ks.aliases().nextElement(); 
    Certificate[] chain = ks.getCertificateChain(alias); 
    ... 

このメソッドは非常に機能的ですが、証明書の完全な文字列をロードしない証明書に問題が発生しました。

例1の場合

例2の場合 When reading certificate 1 the statement below returns 4 strings

When reading certificate 2 the statement below returns only one string

誰もが起きているかもしれないものの任意のアイデアを持っていますか?よりよく説明しようと

EDIT

、この証明書は、WSに接続するために使用されます。通信プロセス中にWSが次の拒否を返します。接続がシャットダウンされました:javax.net.ssl.SSLHandshakeException:致命的なアラートが受信されました:unknown_ca このWSへの接続では、完全な認証チェーンの提示が必要です。証明書の下で述べたように

はJAVAに障害が発生したことを示しているが、それは、.NETで完璧に動作し、正しくAPI documentationによると、証明書チェーン

答えて

0

を表示:

戻り値: 証明書チェーン(ユーザーの証明書が最初に0個以上の認証局が続く順序)、または指定されたエイリアスが存在しないか、証明書チェーンが含まれていない場合はnull

これは、チェインに証明書がなくなる(自己署名証明書)か、または必要なチェーン要素がPKCS#12メッセージに含まれておらず、他のソースから利用できないことを意味します。

+0

私はあなたの意見を理解しています。しかし、.NET経由でインポートした場合、この同じ証明書が正しく機能するため、問題は継続します。 .NETの例を使用すると、システムはすべての証明書チェーンをロードして表示できます。 – Blomersi

+0

.NETとJavaは異なるAPIを持つ異なるプラットフォームであり、異なる結果を生成する可能性があります。 – Crypt32

関連する問題