別のサービスベンダーによって配布されている証明書(.pemファイル)があります。ベンダーから証明書をダウンロードし、ローカルドライブに保存しました。私のWCFクライアントでは、ローカルドライブからこの証明書をロードしようとしていますが、サービスと通信するときに「私の鍵がX.509証明書に存在しません」というエラーが表示されます。このエラーを解決するには、この証明書をローカル証明書ストアにロードする必要があると言われました。誰かが道案内をすることはできますか?ありがとう!他の証明書を自分のローカル証明書ストアにロードする方法は?
ファイルパラメータで指定されたパスから証明書を読み込む以下の機能があります。
public static X509Certificate LoadCertificate(string file)
{
try
{
return X509Certificate.CreateFromCertFile(file);
}
catch (System.Security.Cryptography.CryptographicException)
{
string filestr = File.ReadAllText(file);
StringBuilder sb = new StringBuilder(filestr.Remove(0, filestr.IndexOf("-----BEGIN CERTIFICATE-----")));
sb.Replace("-----BEGIN CERTIFICATE-----", "");
sb.Replace("-----END CERTIFICATE-----", "");
//Decode
try
{ //see if the file is a valid Base64 encoded cert
byte[] certBytes = Convert.FromBase64String(sb.ToString());
return new X509Certificate(certBytes);
}
catch (System.FormatException)
{
throw;
}
}
}
私のWCFクライアントでは、LoadCertificate()関数から作成された証明書がロードされています。
public X509Certificate Certificate { get; set; }
ClientCredentials loginCredentials = new ClientCredentials();
loginCredentials.UserName.UserName = this.UserId;
loginCredentials.UserName.Password = this.Password;
loginCredentials.ClientCertificate.Certificate = new X509Certificate2(this.Certificate);
これを右クリックして「インストール」を選択するだけです... – Yahia
いくつかのコードを共有できますか?もしそうでなければ、@ヤヒアの解決策があなたの唯一のチャンスかもしれません。 –
右クリックで「インストール」オプションが見つかりませんでした。また、ベンダーからの指示は、 "この証明書は.pem拡張子を持つWebサーバー上のファイルとして保存する必要があります。"です。私は証明書がインストールされる必要があるか、単に保存する必要があるかどうかは分かりません。 – Jyina