Περιγραφή: Το αίτημα ματαιώθηκε: Απέτυχε η δημιουργία ασφαλούς καναλιού SSL/TLS. Δεν ήταν δυνατή η δημιουργία ασφαλούς καναλιού SSL/TLS. Δημιουργία πλατφορμών: Windows Server 2012, Windows 7 Service Pack 1 (SP1) και Windows Server 2008 R2 SP1
[επεισόδιο] λήψη ιστότοπου Είναι ένα εργαλείο λήψης ολόκληρου του ιστότοπου Εισαγάγετε τη διεύθυνση URL για λήψη με ένα κλικ. Είναι απλό και εύκολο στη χρήση και έχει εργασίες πολλαπλών νημάτων.
Ορίστε τον κωδικό πριν από το HttpWebRequest
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
Εάν η παραπάνω μέθοδος δεν λειτουργεί, πρόκειται για πρόβλημα σε επίπεδο συστήματος. Ενημερώστε την ενημερωμένη έκδοση κώδικα συστήματος σύμφωνα με το σύστημα που χρησιμοποιείτε αυτήν τη στιγμή.
Ενημερωμένη έκδοση για ενεργοποίηση των TLS 1.1 και TLS 1.2 ως τα προεπιλεγμένα πρωτόκολλα ασφαλείας στο WinHTTP στα Windows, αυτή η ενημέρωση παρέχει υποστήριξη για Transport Layer Security (TLS) στον Windows Server 2012, Windows 7 Service Pack 1 (SP1) και Windows Server 2008 R2 SP1 1.1 και υποστήριξη TLS 1.2, ανατρέξτε στην επίσημη τεκμηρίωση https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
Αντιγράψτε τον ακόλουθο κωδικό μητρώου και εισαγάγετέ τον στο μητρώο. Δημιουργήστε ένα νέο txt, αλλάξτε το επίθημα txt σε reg (κλειδί μητρώου) και εισαγάγετε (δημιουργήστε αντίγραφο ασφαλείας πριν την εισαγωγή)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000800 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000800 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
Το PowerShell ανοίγει:
[Net.ServicePointManager]::SecurityProtocol [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
Η πρώτη γραμμή κώδικα ελέγχει την υποστηριζόμενη έκδοση TLS. Η δεύτερη γραμμή κώδικα τροποποιεί την υποστήριξη TLS.
Καμία από τις δύο προηγούμενες μεθόδους δεν θα λειτουργήσει, επομένως μπορείτε να χρησιμοποιήσετε μόνο την τελική μέθοδο:
Σημείωση: Για συγκεκριμένες εκδόσεις TSL που υποστηρίζονται από κάθε έκδοση των Windows, ανατρέξτε στις συμπληρωματικές πληροφορίες σε αυτό το άρθρο.
Λύσεις υπάρχουν, αλλά εξαρτώνται από την έκδοση πλαισίου:
.NET 4.6 και άνω. Δεν χρειάζεται να κάνετε καμία επιπλέον εργασία για να υποστηρίξετε το TLS 1.2, υποστηρίζεται από προεπιλογή.
.NET 4.5. Το TLS 1.2 υποστηρίζεται, αλλά δεν είναι το προεπιλεγμένο πρωτόκολλο. Πρέπει να επιλέξετε να το χρησιμοποιήσετε. Ο παρακάτω κώδικας ορίζει το TLS 1.2 ως προεπιλογή, φροντίστε να το εκτελέσετε πριν συνδεθείτε σε έναν ασφαλή πόρο:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
.NET 4.0. Το TLS 1.2 δεν υποστηρίζεται, αλλά εάν το .NET 4.5 (ή νεότερο) είναι εγκατεστημένο στο σύστημά σας, εξακολουθείτε να έχετε την επιλογή να χρησιμοποιήσετε το TLS 1.2 ακόμα κι αν το πλαίσιο εφαρμογής σας δεν υποστηρίζει το TLS 1.2. Το μόνο πρόβλημα είναι ότι το SecurityProtocolType στο .NET 4.0 δεν έχει καταχώρηση για TLS1.2, επομένως πρέπει να χρησιμοποιήσουμε την αριθμητική αναπαράσταση αυτής της τιμής enum:
ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;
.NET 3.5 ή χαμηλότερο. Το TLS 1.2(*) δεν υποστηρίζεται και δεν υπάρχει λύση. Αναβαθμίστε την εφαρμογή σας στην πιο πρόσφατη έκδοση του πλαισίου.
ΥΓ Για το σενάριο 3, υπάρχει επίσης ένα hack μητρώου που θα αναγκάσει το 4.5 να χρησιμοποιήσει το TLS 1.2 από προεπιλογή χωρίς να χρειάζεται να το επιβάλει μέσω προγραμματισμού. PPS Όπως αναφέρει ο Christian Pop της Microsoft παρακάτω, υπάρχει μια πιο πρόσφατη ενημέρωση κώδικα διαθέσιμη για .NET 3.5 που επιτρέπει την υποστήριξη TLS1.2.
Βλέπω:
Ίσως το μήκος του κλειδιού πιστοποιητικού που παρέχεται από τον ιστότοπο είναι 512 bit και σύμφωνα με τα τρέχοντα βιομηχανικά πρότυπα, θα πρέπει να περιέχει ένα δημόσιο κλειδί τουλάχιστον 2048 bit. Η ενημέρωση ασφαλείας του Σεπτεμβρίου 2016 της Microsoft απάντησε σε αυτό το ζήτημα δηλώνοντας ότι εάν το μήκος του δημόσιου κλειδιού είναι μικρότερο από 2048 byte (π.χ. RSA 512),Τα Windows μπορούν να ακυρώσουν τις συνδέσεις HTTPS
2012 R2 and Windows 8
2008 R2 and Windows 7
SecurityProtocolType.Tls1.0=0xC0; SecurityProtocolType.Tls1.1=0x300; SecurityProtocolType.Tls1.2=0xC00;
.net 4.0/4.5 προεπιλεγμένη τιμή: SecurityProtocolType.Ssl3 .net 4.6/4.7 προεπιλεγμένη τιμή: SecurityProtocolType.Tls |
SCH_USE_STRONG_CRYPTO Αυτή η σημαία θα χρησιμοποιηθεί αυτόματα στο .NET Framework 4.6 https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-net-framework Στα Win7Sp1 και .Net 3.5.1, υποστηρίζεται το TLS1.2
ServicePointManager.SecurityProtocol &= ~SecurityProtocolType.Ssl3 //Close ssl3 ServicePointManager.SecurityProtocol |= (SecurityProtocolType)0x300 (SecurityProtocolType)0.1d
Το συμπέρασμα του TLS1.2 είναι το εξής:
Τροποποίηση μητρώου στο .net4
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001
Αυτό το άρθρο είναι γραμμένο απόλήψη ιστότοπουΣυγκεντρωμένο και οργανωμένο, το περιεχόμενο προέρχεται από το Διαδίκτυο, αναφέρετε την πηγή κατά την επανεκτύπωση, σας ευχαριστώ.