ホームページ >バックエンド開発 >C#.Net チュートリアル >ASP.NET が X509Certificate2 を使用する場合のいくつかの問題に対する解決策の共有 (図)

ASP.NET が X509Certificate2 を使用する場合のいくつかの問題に対する解決策の共有 (図)

黄舟
黄舟オリジナル
2017-05-21 11:27:494427ブラウズ

この記事では主に、X509Certificate2 を使用する際の一連の問題に対する ASP.NET の解決策を詳しく紹介します。興味のある友人は参考にしてください

WeChat 経由で返金を支払う場合。では、p12 証明書を使用する必要があるため、一連の落とし穴に遭遇することになります。後で簡単に参照できるように、ここにメモしておきます。

証明書をロードするための元のコード:

コードをコピーしますコードは次のとおりです:

1 X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);2 Request.ClientCertificates.Add(cert);

vs でテストに合格しました。ただし、この問題は、IIS に展開すると報告され続けます:

コードをコピーします コードは次のとおりです:

System.Security.Cryptography.CryptographicException: 系统找不到指定的文件。

詳細なスタック トレース情報:

System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
System.Security .Cryptography 内 System.Security.Cryptography.X509Certificates.X509Certificate .LoadCertificateFromFile(String fileName, Object パスワード, X509KeyStorageFlags keyStorageFlags) 内 System.Security.Cryptography.X509Certificates 内、文字列 URL、ブール値 isUseCert、Int32 timeout)。 テストを繰り返した結果、コードやファイルパスに問題がないことを確認しました。 Microsoft のドキュメントを検索
した結果、関連する手順が見つかり、問題を指摘したので、以下に操作プロセスを共有します。
1. 証明書をインストールしてアップロードします
[スタート] -> [ファイル名を指定して実行] -> [mmc] と入力し、[ファイル] -> [コンソール] を選択します。 [追加/削除スナップイン] (Ctrl+M)

[証明書] -> [次へ] -> [完了]を選択します。 [証明書] -> [インポート]

証明書ファイルをインポートします

まず、winhttpcertcfg.exe ツール (Windows HTTP サービス証明書構成ツール) をインストールします。インストールが完了すると、ツールは C:Program Files (x86)Windows

Resource KitsTools フォルダーまたは C:Program FilesWindows Resource KitsTools フォルダーに配置されます。 cmd を開いてコマンドを入力します:

コードをコピーします コードは次のとおりです:

winhttpcertcfg -g -c LOCAL_MACHINEMY -s "証明書名" -a "iis アカウント ID"

-g コマンドは次のとおりです。 authorization

-c 証明書が置かれているストレージ領域を指します

さらに、写真に示されているように、証明書の名前はこれです

。間違って詳細をクリックしただけです。この証明書の名前が内部に取り込まれるため、認証が失敗します。

iis アカウントの識別は、サイトに対応するアプリケーション プールを指します。詳細設定には、対応するユーザーを識別するオプションがあります。そのときに承認した ID は Network Service で、アプリケーション プール内の ID は ApplicationPoolIdentity でした。その結果、リクエストを開始したとき:

コードをコピー コードは次のとおりです:

System.Net.WebException。 : リクエストは中止されました: SSL/TLS

secureチャンネルの作成に失敗しました。

3. コードを変更します

これらの設定が完了したら、以前に証明書をロードしたコードを変更します。

复制代码 代码如下:

1 X509Store store = new X509Store("My", StoreLocation.LocalMachine);
2 store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
3 
4 System.Security.Cryptography.X509Certificates.X509Certificate2 cert = 5 store.Certificates.Find(X509FindType.FindBySubjectName, "你的证书名称", false)[0];

再测试一下,终于成功!

以上がASP.NET が X509Certificate2 を使用する場合のいくつかの問題に対する解決策の共有 (図)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。