2016-07-23 6 views
2

私たちはしばらくの間、問題を解決しようとしてきました。複数の(ルートCAを含む)証明書を.netクライアントから送信する方法

私たちはクライアント証明書を持つWebサービスを消費します。

サービスの所有者は、私たちに.p12ファイルを与えました。クライアント証明書とCAと秘密鍵が含まれています。

証明書自体から証明書のパスがわかります。

私たちがSOAP UIを介してWebサービスを呼び出そうとすると、それは機能します。 SOAPUIでは、.p12ファイルをキーストアとして選択し、パスワードを設定しました。できます。我々は.NETクライアントアプリケーションを介してWebサービスを呼び出すしようとすると、それは動作しません

enter image description here

- この我々はWireSharkのでパッケージを監視する場合、我々は

 channelFactory = new ChannelFactory<AcquisitionAutorisationService>(binding, serviceAddress); 
     channelFactory.Credentials.ClientCertificate.Certificate = new X509Certificate2(); 
     channelFactory.Credentials.ClientCertificate.Certificate.Import(@"C:\cert\abc.p12", "password", X509KeyStorageFlags.DefaultKeySet); 

Webサービスを呼び出す方法です、私たちはSOAPUIリクエストで2つの証明書クライアント証明書と認証局の両方を送信し、ことがわかりました。

enter image description here

しかし、.NETクライアントのみクライアント証明書ではないCAを送信サーバーのファイアウォールは私たちの呼び出しを許可しません。

enter image description here

だから私の質問は、私たちが.NETで、SOAP UIのような私たちの要求にCAルートを送信するための管理方法を来ているのですか?

誰かが問題について考えていただけたら、私は感謝します!

+0

まだ回答がありませんか?あなたは解決策を見つけましたか?私は同じような問題を抱えています –

答えて

0

最初のクライアント(SOAP UI)がCA証明書を送信している場合は、別のCAによって署名された中間CA証明書である必要があります。クライアントは、ルートCA証明書を送信する理由はありません。

2番目のクライアントが送信する必要がないように、中間CA証明書をサーバーにインストールするのが簡単な場合もあります。

また、クライアント証明書チェーンの構築時に使用できるように、ローカルマシン(またはユーザー)のWindows証明書ストアに中間CA証明書をクライアントにインストールするだけでも簡単です。

それ以外の場合は、.NETで中間 CA証明書をクライアント証明書チェーンに送信する方法を探していることを確認しています。

+0

答えをありがとう。中間CA証明書は、実際にクライアントウィンドウの証明書ストアにインストールされます。しかし、私はSOAPUIと.netクライアントの違いを生み出すのだろうかと思います。両方のアプリケーションで同じ.p12ファイルが使用されるためです。 (申し訳ありませんが、私はこれらの認証の問題に関する専門家ではない、私は間違って問題を表現している可能性があります) –

+0

これらの2つのクライアントの違いはわかりませんが、たとえば、opensslベースのクライアントどのAPI呼び出しを行うかによって、opensslは中間証明書をチェーンに追加するか、追加しません。それはすべてAPIに依存し、そのAPIにどのような呼び出しを行うかによって異なります。 –

関連する問題