Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen von Lösungen für einige Probleme, wenn ASP.NET X509Certificate2 verwendet (Bild)

Teilen von Lösungen für einige Probleme, wenn ASP.NET X509Certificate2 verwendet (Bild)

黄舟
黄舟Original
2017-05-21 11:27:494353Durchsuche

In diesem Artikel wird hauptsächlich ausführlich ASP.NET vorgestellt, wie eine Reihe von Problemen bei der Verwendung von X509Cert gelöst werden könnenificate2, das einen bestimmten Referenzwert hat. Interessierte Freunde können sich auf

beziehen. Bei Rückerstattungen per WeChat-Zahlung traten aufgrund der Notwendigkeit, das P12-Zertifikat zu verwenden, eine Reihe von Fallstricken auf. Machen Sie hier eine Notiz, damit Sie später leichter darauf zurückgreifen können.

Originalcode zum Laden des Zertifikats:

Kopieren Sie den Code Der Code lautet wie folgt:

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

Getestet am vs. Bestanden. Bei der Bereitstellung in IIS tritt dieses Problem jedoch weiterhin auf:

Code kopieren Der Code lautet wie folgt:

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

Detaillierte Stack-Trace-Informationen:

bei System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
bei System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromFile(String fileName, IntPtr Password, UINT32 DWFLAGS, Boolean Persist Key Set , SafecertContexthan DL E & PCERTCTX)
.X509certifiedEs.x509certified.loadcertifiedFromFile (String fileName, Objekt Passwort, Byte[]
xml
, String-URL, Boolean isUseCert, Int32 timeout). Nach wiederholten Tests wurde bestätigt, dass es sich nicht um ein Problem mit dem Code oder Dateipfad handelte. Nachdem ich

die Dokumentation von Microsoft durchsucht hatte, habe ich relevante Anweisungen gefunden und auf das Problem hingewiesen. Nachfolgend werde ich meinen Bedienungsprozess mitteilen.


1. Installieren Sie das Zertifikat

auf Klicken Sie auf [Start] -> Rufen Sie die Benutzeroberfläche „Konsole“ auf. Wählen Sie [Datei] – Snap-In „Hinzufügen/ löschen“ (Strg+M). Wählen Sie [Zertifikat] -> [Weiter] -> >

Importieren Sie Ihre Zertifikatsdatei

2. Autorisierungszertifikat

Installieren Sie zunächst das Tool winhttpcertcfg.exe (Windows HTTP Services). Zertifikatkonfigurationstool). Nach Abschluss der Installation befindet sich das Tool im Ordner „C:Programme (x86)Windows

Resource KitsTools“ oder „C:ProgrammeWindows Resource KitsTools“. Öffnen Sie cmd und geben Sie den Befehl ein:

Kopieren Sie den Code

Der Code lautet wie folgt:

winhttpcertcfg -g -c LOCAL_MACHINEMY -s "Ihr Zertifikatsname" -a " Ihre IIS-Konto-ID „

-g-Befehl ist Autorisierung

-c bezieht sich auf den Speicherbereich, in dem sich das Zertifikat befindet

Darüber hinaus lautet der Name des Zertifikats , wie im Bild gezeigt

statt Etwas anderes habe ich einfach auf die Details dieses Zertifikats geklickt und den Namen darin übernommen, was dazu führte, dass die Autorisierung fehlschlug. Die iis-Kontoidentifikation bezieht sich auf den Anwendungspool, der der Site entspricht. In den erweiterten Einstellungen besteht die Möglichkeit, den entsprechenden Benutzer zu identifizieren. Die Identität, die ich damals autorisiert habe, war Network Service, und die Identität im Anwendungspool war ApplicationPoolIdentity. Als ich eine Anfrage initiierte, wurde Folgendes angezeigt:

Code kopieren Der Code lautet wie folgt:

System.Net.WebException: Anforderung abgebrochen: Fehler beim Erstellen des SSL/TLS-

sicheren

-Kanals.

3. Ändern Sie den Code

Ändern Sie nach Abschluss dieser Konfigurationen den Code zum Laden des Zertifikats.

复制代码 代码如下:

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];

再测试一下,终于成功!

Das obige ist der detaillierte Inhalt vonTeilen von Lösungen für einige Probleme, wenn ASP.NET X509Certificate2 verwendet (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn