2017-12-11 11 views
0

私は証明書を与えられており、私のアプリケーションからhttpコールを行うためにそれを使用するよう依頼されています(私はJavaベースのMuleを使用しています)。証明書からjavaキーストアへ

私が与えた証明書は.cerファイルです。私の会社に固有の証明書で、そのサーバーの公開鍵を持っていると思います。

私のCERファイルを提供してくれた会社から、私にパスワードが与えられています。例えば次のように私は、エンドポイントのことを呼び出すと、以下のように、私は最初のコマンドを実行し、それを使用するには

...

keytool -importcert -file myCert.cer -keystore keystore.ks -alias 1 

ABC1234私はその後...私のコードに

<http:request-config name="HTTP_Request_Configuration" protocol="HTTPS" host="hostname.com" port="443" doc:name="HTTP Request Configuration"> 
    <tls:context>   
     <tls:key-store type="jks" path="keystore.ks" alias="1" keyPassword="changeit" password="changeit"/> 
    </tls:context> 
</http:request-config> 

それをplonked私のアプリケーションでは、「エラー403:認証がありません」というメッセージが表示されます。

このプロセスでどこにでもパスワード 'abc1234'を入力する必要はありませんでした。その理由は私が403を手に入れた理由だと思います。パスワードはどこで提供される必要がありますか?

ありがとう

+1

ブラウザからサイトにアクセスしようとしましたか?これはおそらくSSLとは無関係のエラーです。 –

+2

詳細を入力する必要があります。証明書はサービスエンドポイントのカスタムCA /証明書として信頼されていますか? (私たちは、あなたがどのようにそれを確実にする必要があるかを推測できます)。 EJPは彼の答えの中で正しいです、信頼できる証明書はトラストストアに属します。 403は「not authorized」を意味し、何が欠けているのかを伝えるべきサービスプロバイダ(会社) – gusto2

答えて

-1

証明書ファイルはパスワードで保護されていません。キーストアがあります。彼らがあなたに送ったものは証明書ではなく、完全なキーストアである可能性があります。このようなキーストアは、パスワードの代わりに—のキーペアでTLSクライアント認証—認証をサポートすることを意図していた可能性があります。

証明書には鍵ペアの半分が含まれています。認証に使用するには、秘密鍵も必要です。通常、独自の証明書を取得するには、鍵ペアを自分で生成し、公開鍵を証明書としてあなたの身元とともに拘束する人に送ります。公開鍵を送信するための標準形式は、CSRまたは証明書署名要求と呼ばれます。

Java keytoolを使用すると、鍵のペアとその鍵のCSRを生成できます。その後、完全に署名された証明書をインポートできます。これらのステップを実行しましたか?誰かがあなたのためにこのプロセスを実行し、完全なキーストアを送ることも可能ですが、彼らはあなたの秘密鍵も知っています。

また、クライアントがサーバーを認証できるように、接続後にクライアントを認証するために使用するパスワードがあり、ファイルをまったく保護していない可能性があります。しかし、証明書に実際にあなたのアイデンティティがある場合、あなたが言うように、これは意味をなさない。

+0

.cerファイルは証明書です。キーストアではありません。 – EJP

+0

@EJPしかし、拡張機能が正しく使用されたかどうかはわかりません。証明書にはパスワードがありません。 – erickson

+0

それが証明書でない場合、 'keytool -importcert'コマンドはどのように機能しましたか? – EJP

-1

キーストアではなくトラストストアに追加しておく必要があります。これは信頼できる証明書であり、独自の証明書として使用することはできません。あなた自身の証明書ではありません。

+0

トラストアンカーは、自分の会社に固有のものではありません。 – erickson

+0

@ericksonあなたは私の答えに現れない言葉を使っています。自己署名入りサーバー証明書は、自分の会社固有の*完全*ものです。私は願います。自分の証明書であれば、秘密鍵はどこにありますか? – EJP

1

ご意見ありがとうございました。すべての答えとコメントが私を助けました。

最後に、証明書に(コメントに記載されているように)パスワードがなく、リストされたパスワードが適切でないことがわかりました。

403がSSLハンドシェークエラーの原因であり、CA証明書が見つからないことが判明しました。

私は、SSLハンドシェイクログをオンにすることでしか見つかりませんでした。

+0

こんにちは、HTTP-403を受け取った場合、これは通常、HTTPコードがSSLレイヤーの上にあるため、SSL接続が成功していることを意味します。あなたの説明の後、私は証明書検証の問題を示すChainverifier Exceptionを期待していました。 – SkateScout

関連する問題