Maison > développement back-end > Tutoriel C#.Net > Partage de solutions à certains problèmes lorsque ASP.NET utilise X509Certificate2 (image)

Partage de solutions à certains problèmes lorsque ASP.NET utilise X509Certificate2 (image)

黄舟
Libérer: 2017-05-21 11:27:49
original
4464 Les gens l'ont consulté

Cet article présente principalement en détail ASP.NET comment résoudre une série de problèmes lors de l'utilisation de X509Certificate2, qui a une certaine valeur de référence. les amis intéressés peuvent se référer à

Lors des remboursements via le paiement WeChat, en raison de la nécessité d'utiliser le certificat p12, une série de pièges ont été rencontrés. Notez-le ici pour pouvoir vous y référer facilement plus tard.

Code original pour charger le certificat :

Copier le code Le code est le suivant :

1 X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);2 Request.ClientCertificates.Add(cert);
Copier après la connexion

Testé sur vs. Réussi. Mais ce problème continue à être signalé lors du déploiement sur IIS :

Copier le code Le code est le suivant :

System.Security.Cryptography.CryptographicException: 系统找不到指定的文件。
Copier après la connexion

Informations détaillées sur la trace de pile :

sur System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
sur System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromFile(String fileName, IntPtr Mot de passe, UINT32 DWFLAGS, Boolean Persist Key Set , SafecertContexthan DL E & PCERTCTX)
.X509certificationEs.x509certified.loadcertifiedFromFile (String fileName, Object mot de passe, Byte[]
xml
, String url, Boolean isUseCert, Int32 timeout). Après des tests répétés, il a été confirmé qu'il ne s'agissait pas d'un problème avec le code ou le chemin du fichier. Après avoir recherché

la documentation de Microsoft, j'ai trouvé des instructions pertinentes et signalé le problème. Je partagerai mon processus de fonctionnement ci-dessous.

1. Installez le certificat

jusqu'à Cliquez sur [Démarrer] -> [Exécuter] -> Entrez dans l'interface "Console" -> Sélectionnez [Fichier] -> [Ajouter/

Supprimer

snap-in] (Ctrl+M)

Sélectionnez [Certificat] -> [Compte d'ordinateur] -> [Suivant] -> [Terminé]

Sélectionnez [Certificat] -> >

Importez votre fichier de certificat

2. Certificat d'autorisation

Installez d'abord l'outil winhttpcertcfg.exe (Windows HTTP Services Outil de configuration de certificat). Une fois l'installation terminée, l'outil se trouvera dans le dossier C:Program Files (x86)Windows

Resource KitsTools ou C:Program FilesWindows Resource KitsTools. Ouvrez cmd et tapez la commande :

Copiez le code Le code est le suivant :

winhttpcertcfg -g -c LOCAL_MACHINEMY -s "Votre nom de certificat" -a " Votre identifiant de compte IIS "

-g la commande est l'autorisation

-c fait référence à la zone de stockage où se trouve le certificat

De plus, le nom du certificat est celui-ci , comme le montre l'image

au lieu de Quelque chose d'autre, j'ai juste fait une erreur, j'ai cliqué sur les détails de ce certificat et j'ai pris le nom à l'intérieur, provoquant l'échec de l'autorisation.

L'identification du compte iis fait référence au pool d'applications correspondant au site. Il existe une option pour identifier l'utilisateur correspondant dans les paramètres avancés. L'identité que j'ai autorisée à ce moment-là était Network Service, et l'identité dans le pool d'applications était ApplicationPoolIdentity. Par conséquent, lorsque j'ai lancé une demande, il est apparu :

Copier le code

Le code. est la suivante :

System.Net.WebException : demande abandonnée : échec de la création du canal SSL/TLS

sécurisé.

3. Modifier le code

Après avoir terminé ces configurations, modifiez le code de chargement du certificat avant.

复制代码 代码如下:

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];
Copier après la connexion

再测试一下,终于成功!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal