この記事では主に、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)
[証明書] -> [次へ] -> [完了]を選択します。 [証明書] -> [インポート]
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/TLSsecureチャンネルの作成に失敗しました。
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 サイトの他の関連記事を参照してください。