CAcertにSSLサーバー証明書を作成しました。私は、Javaプログラム(下記)から、このサーバーからページをフェッチしようとすると、私はcacert.orgで作成された証明書のjavaチョークが "keyCertSignビットが設定されていません"と表示されるのはなぜですか?
Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: CA key usage check failed: keyCertSign bit is not set
誰もがこれを引き起こしている可能性があります知っているのですか?
- クラス1とクラス3の両方のルート証明書で署名された証明書を作成しようとしましたが、同じ結果です。 cacert.orgからのルート&クラス3つの本命が適切にインストールされていることを信じるように私をリードhttps://www.cacert.orgとhttps://pause.perl.org(:私はCAcert.orgの本命を使用する2つの他のサイトからページをフェッチしようとするとエラーがが発生しない
- 私のシステム)。
- 私はcacert.orgの証明書を
keytool -keystore /etc/ssl/certs/java/cacerts -list
に見ることができます。 - はい、cacert.orgのルートとクラス3の証明書には、ほとんどのWebブラウザが同梱されています。
- certは
*.an.example.com
(実際のドメインが変更されました)のワイルドカード証明書です。
ここで私がテストに使用しているJavaコードです:
class Test {
public static void main(String args[]) throws Exception {
java.net.URL url = new java.net.URL(args[0]);
java.io.InputStream s = url.openStream();
}
}
full stack traceは、任意の有用な情報を追加するためには表示されませんが。
keytool(1)
マンページでは、
Extensions can be marked critical to indicate that the extension should
be checked and enforced/used. For example, if a certificate has the
KeyUsage extension marked critical and set to "keyCertSign" then if this
certificate is presented during SSL communication, it should be rejected,
as the certificate extension indicates that the associated private key
should only be used for signing certificates and not for SSL use.
言及しませんが、私は証明書をチェックし、「証明書キー使用法」の拡張子は「署名」と言うんが、それはまた、「緊急でない」とマークされています。
申し訳ありませんが、私は自分のドメイン名や証明書を明らかにしたくありませんが、必要であればテスト用のサーバをスピンアップできます。
これを見つけました:http://www.ericsimmerman.com/resolving-a-ca-key-usage-check-failed-keycert – Thilo
@Thilo - good find。私は二重にチェックし、SSLCertificateChainFileが正しくインストールされ、設定されているように見えます。 –
@Thilo - 私はそれを取り戻す、あなたは右です! [連鎖ファイルが壊れている](http://wiki.cacert.org/SimpleApacheCert?action=AttachFile&do=view&target=CAcert_chain.pem)(CAcert.orgの皆さん:FIX THAT!)私は 'cat class3.crt root.crt> chain.pem'で自分自身でチェーンファイルを作成しましたが、暗号化された" keyCertSignビットが設定されていません "というエラーは消えました。これを答えとして追加してください。私はそれを受け入れます。 –