2011-10-27 12 views
1

XMLRPC.NET + HTTPsに関する私の問題を解決した後、私はこのXMLRPCクライアント/サーバーサンプルソリューションでWindows上でいくつかのテストを成功させましたが、(Mono Linux上で実行されている)クライアントをサーバーに接続できませんでした。私はテスト用に自己生成証明書を使用していますが(クライアントとサーバーの両方)、Linux上のクライアントでは機能しません。Mono C#HTTPs(XMLRPC.NET)エラー:クライアント証明書またはサーバー証明書の問題?

あなたが見ることができるように、クライアントコードは、起動時にX509証明書を生成:

System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); 
IStateName proxy = XmlRpcProxyGen.Create<IStateName>(); 
XmlRpcClientProtocol cp = (XmlRpcClientProtocol)proxy; 
cp.Url = "https://127.0.0.1:5678/"; 
cp.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate(@"C:\path\to\your\certificate\file\my.cer")); 
cp.KeepAlive = false; 

をし、信頼できない、すべての証明書を受け入れるように設計されています。しかし、これにもかかわらず、それはまだ動作しません。

また、wget https://www.google.com/が正常に連絡先をダウンロードして、私のケースではwget https://192.168.1.3:5678/、さらには--no-check-certificateと表示されないことを示しています。

何が起こっているのか考えている人はいますか?どうもありがとうございました。

答えて

0

クイックアンサー: .cerファイルには秘密鍵が含まれていないため、クライアント証明書には使用できません。長い

は、どのようにそれがWindows上で動作しますので、

に答えますか? CryptoAPIは証明書ストアに照会して、証明書と一致する秘密キーが存在するかどうかを確認します。それがそうならそれはそれをロードする自動的に

どのようにモノで動作することができますか?最も簡単な解決策は、PKCS#12ファイル(一般に末尾に.pfxまたは.p12)をロードするX509Certificate2インスタンスを作成することです。そのファイル(適切に生成された場合)には、X.509証明書と秘密鍵の両方が含まれます。これにより、Monoはこのコンテキストで証明書を使用できます。

+0

こんにちは、ありがとう、poupou。だから私がうまくいけば、MonoでPKCSファイルを作成し(makecertを使って?)、 'X509Certificate2'クラスを使ってこのファイルを読み込む必要がありますか? – virrea

+0

MonoのmakecertはPKCS#12ファイルを作成できます。マイクロソフト社のmakecertの古いバージョンは、新しいバージョンのものではありませんでした。しかし** yes ** PKCS#12ファイルを取得したら、それを読むために 'X509Certificate2'を使うことができます(秘密鍵を保護するためにオプションのパスワードで) – poupou