X509Certificate.CreateFromCertFile-指定されたネットワークパスワードが正しくない
-
23-08-2019 - |
質問
していますNETアプリケーションを利用したいクライアントとして呼びSSL SOAPのwebサービスです。って提供された有効なクライアント証明書という foo.pfx
.がパスワードは、証明書そのものです。
私はあの証明書の以下の場所: C:\certs\foo.pfx
のウェブサービスでは、添付する必要はクライアント証明書.こちらのコード:
public X509Certificate GetCertificateFromDisk(){
try{
string certPath = ConfigurationManager.AppSettings["MyCertPath"].ToString();
//this evaluates to "c:\\certs\\foo.pfx". So far so good.
X509Certificate myCert = X509Certificate.CreateFromCertFile(certPath);
// exception is raised here! "The specified network password is not correct"
return cert;
}
catch (Exception ex){
throw;
}
}
そのような例外できます。NETアプリケーションを読むようにディスク。の方法 CreateFromCertFile
静的メソッドを作成新しいインスタンスのX509Certificate.の方法なオーバーライド、一つの引数:のパスです。
私の点検を除き、私はそれ:
_COMPlusExceptionCode = -532459699
Source=mscorlib
質問なんだろうけど、日本人に何かの原因の例外"に指定されたネットワークパスワードが正しくない"?
解決
転がっている気がします。を証明するために設計されています。pfxできます。cerファイルです。
教訓...
- .cerのファイルがX.509証明書のバイナリ形式です。その DERで符号化された.
- .pfxファイル コンテナのファイル.もDERエンコードされます。が含まれているな証明書が鍵で暗号化された形式です。
他のヒント
必要がある場合がありますユーザー X509Certificate2()
パラメータ X509KeyStorageFlags.MachineKeySet
です。この固定をしています。信用元のサイトから示唆されること: http://vdachev.net/2012/03/07/c-sharp-error-creating-x509certificate2-from-a-pfx-or-p12-file-in-production/
引用:
原因
原因はなさそうだ エラーメッセージが返されます。何らかの理由にコンストラクタであることができるよう アクセスのキーストアは、鍵の登録 ファイルが開きます。デフォルトでは、ユーザのキーストアを使用で ASP.純(おそらく非インタラクティブのWindowsサービス一般) きませんを開きます。チャンスは、ユーザのキーストアの 選択されたアカウントにはないものが存在します。
液
ひとつまみをユーザーのキーストアフロント の口座証明書をインポートする個人店舗( 取り外してください。
少し値段が高くなりますが、パスは追加パラメータのコンストラクタ –を示すフラグの密鍵(う)保存され ローカルコンピュータ–X509KeyStorageFlags.MachineKeySetす:
var certificate = new X509Certificate2(fileName, password, X509KeyStorageFlags.MachineKeySet);
のためのPFXとパスワードなしパスワードとして指定できます string.Empty
.
によって状況をするので,それをインストール証明書をサーバーの初めての信頼レベルアップする前に輸出の .cer
ファイルです。
いったいこのために同様のプロジェクトは、こちらにあたっての注を生かしていくことになりました。
の交換 Foo.cer
輸出証明書の設置、サーバーにコピーします。(インストールのcertから pfx
ファイルとして輸出し cer
ファイルです。)
コマンドIIS6をIIS_WPGグループへのアクセスcertます。る必要があり
winhttpcertcfg
(下のリンク先を掴む独自のコピー).C:\Program ファイルを\Windowsリソースキット\ツール>winhttpcertcfg-i(パpfxファイル、例えば.e:\Certs\Foo.pfx)-c LOCAL_MACHINE\My-a IIS_WPG-p(パスワードpfxファイル)
ワキー情報や助成金の特典
付与鍵にアクセスのためのアカウント:
(SERVERNAME)\IIS_WPG
ダウンロード WinHttpCertCfg.msi
こちらの ることをインストールしexe.
詳細情報の使用法に関するcert configき こちらの.
そのうちいおcertになりました
//Cert Challenge URL
Uri requestURI = new Uri("https://someurl");
//Create the Request Object
HttpWebRequest pageRequest = (HttpWebRequest)WebRequest.Create(requestURI);
//After installing the cert on the server export a client cert to the working directory as Foo.cer
string certFile = MapPath("Foo.cer");
X509Certificate cert = X509Certificate.CreateFromCertFile(certFile);
//Set the Request Object parameters
pageRequest.ContentType = "application/x-www-form-urlencoded";
pageRequest.Method = "POST";
pageRequest.AllowWriteStreamBuffering = false;
pageRequest.AllowAutoRedirect = false;
pageRequest.ClientCertificates.Add(cert);
これかの資格を取得しcertがだまさにそのものが必要なcertことがで共同利用することは原則できます。
「指定されたネットワークパスワードが正しくありません」というエラーメッセージはまた、OSの店の一つにインポートしようとしている証明書は、その店ですでに存在しているときに返されます。
私の場合は、専用のアプリケーションモードで実行しようとしていたと私は同じエラーを得ています。
指定されたネットワークパスワードが正しくありません。
(Xero.Api.Example.Applications.Private
中)PrivateAuthenticatorコンストラクタは、証明書の作成中に定義されたパスワードがないと仮定すると、証明書をインポートしようとしていた。
_certificate = new X509Certificate2();
_certificate.Import(certificatePath);
それから私は、パスワードを使用して、過負荷メソッドを使用してインポートを変更し、
_certificate.Import(certificatePath, "mypasswordusedtocreatethecertificate", X509KeyStorageFlags.MachineKeySet);
あなたはX509KeyStorageFlags.MachineKeySetする必要があるかもしれません。
私は、Webの仕事から証明書を使用しています。
私の場合は、アプリケーションプールでNetworkServiceにアイデンティティを変更すると、この問題を解決します。