3

SOAP メッセージをサードパーティ サービスに送信する非常に単純な WCF クライアント アプリケーションを作成しようとしています。すべてのメッセージはデジタル署名されている必要があります。これは、より大きなアプリケーションにコードを追加する前の概念実証です。

証明書を含む .cer ファイルと、秘密鍵を含む .pem ファイルがあります。私がやろうとしているのは、.cer ファイルを使用して証明書をロードし、メッセージを送信することです。しかし、「X.509 証明書に秘密鍵が存在しません」というエラーが表示されます。

問題の 1 つである問題は、私が WCF、デジタル証明書、秘密鍵などについてほとんど何も知らないことです。私はいくつかの読書をしました、私は顔が青くなるまでグーグルで検索しましたが、どこにも行きませんでした.

.cert ファイルを開くと、証明書に秘密鍵が含まれていることを示す「BEGIN ENCRYPTED PRIVATE KEY」というラベルの付いたセクションがあります。では、存在しないというメッセージが表示されるのはなぜですか? また、秘密鍵を証明書に追加する必要がある場合、どうすればよいですか?

ここで基本的に私がやっていること。これは私の実際のコードではありませんが、関連するすべてのものが含まれています。

MyWSClient c = new MyWSClient();
c.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2(@"pathToFile.cer");
c.SomeValidCall();
4

2 に答える 2

0

この証明書と鍵のペアをどのように作成していますか? openssl を使用して、それらを PKCS#12 証明書に組み合わせることができます。

openssl pkcs12 -export -in yourcert.crt -inkey yourprivkey.key -out newcert.p12 

.pem 秘密鍵で動作させるには、入力形式をいじる必要がある場合があります。

于 2011-08-09T12:53:28.803 に答える
0

私の同僚は解決策を見つけました。理由はわかりませんが、.cer ファイルではなく .der ファイルを使用すると問題が解決します。これは、証明書、秘密鍵、およびルート証明書を .pem ファイルとして使用して .der ファイルを生成するために使用したコマンドです。

openssl pkcs12 -export -in cert.pem -inkey private_key.pem -certfile root_cert.cer -out pkcs12.der
于 2011-08-09T15:26:50.067 に答える