X509Certificate.CreateFromCertFile-指定されたネットワークパスワードが正しくない

StackOverflow https://stackoverflow.com/questions/899991

質問

しています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.

参照 https://stackoverflow.com/a/8291956/130352

によって状況をするので,それをインストール証明書をサーバーの初めての信頼レベルアップする前に輸出の .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にアイデンティティを変更すると、この問題を解決します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top