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);
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: 系统找不到指定的文件。
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.
jusqu'à Cliquez sur [Démarrer] -> [Exécuter] -> Entrez dans l'interface "Console" -> Sélectionnez [Fichier] -> [Ajouter/
SupprimerSé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)WindowsResource 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'imageau 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/TLSsécurisé.
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];
再测试一下,终于成功!
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!