Δεν μπορούμε να συνδεθούμε σε έναν διακομιστή HTTPS χρησιμοποιώντας το WebRequest
λόγω αυτού του μηνύματος σφάλματος:
`Η αίτηση διακόπηκε: Δεν ήταν δυνατή η δημιουργία ασφαλούς καναλιού SSL/TLS.
Γνωρίζουμε ότι ο διακομιστής δεν έχει έγκυρο πιστοποιητικό HTTPS με τη διαδρομή που χρησιμοποιήθηκε, αλλά για να παρακάμψουμε αυτό το πρόβλημα, χρησιμοποιούμε τον παρακάτω κώδικα που πήραμε από μια άλλη δημοσίευση του StackOverflow:
private void Somewhere() {
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AlwaysGoodCertificate);
}
private static bool AlwaysGoodCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) {
return true;
}
Το πρόβλημα είναι ότι ο διακομιστής δεν επικυρώνει ποτέ το πιστοποιητικό και αποτυγχάνει με το παραπάνω σφάλμα. Έχει κανείς κάποια ιδέα για το τι πρέπει να κάνω;
Θα πρέπει να αναφέρω ότι ένας συνάδελφος και εγώ κάναμε δοκιμές πριν από μερικές εβδομάδες και λειτουργούσε μια χαρά με κάτι παρόμοιο με αυτό που έγραψα παραπάνω. Η μόνη "σημαντική διαφορά" που διαπιστώσαμε είναι ότι εγώ χρησιμοποιώ Windows 7 και αυτός χρησιμοποιούσε Windows XP. Μήπως αυτό αλλάζει κάτι;
Το πρόβλημα που αντιμετωπίζετε είναι ότι ο χρήστης του aspNet δεν έχει πρόσβαση στο πιστοποιητικό. Πρέπει να δώσετε πρόσβαση χρησιμοποιώντας το winhttpcertcfg.exe.
Ένα παράδειγμα για το πώς να το ρυθμίσετε αυτό βρίσκεται στη διεύθυνση: http://support.microsoft.com/kb/901183
Κάτω από το βήμα 2 σε περισσότερες πληροφορίες
Επεξεργασία: Στις πιο πρόσφατες εκδόσεις του IIS, αυτή η λειτουργία είναι ενσωματωμένη στο εργαλείο διαχείρισης πιστοποιητικών - και μπορείτε να έχετε πρόσβαση κάνοντας δεξί κλικ στο πιστοποιητικό και χρησιμοποιώντας την επιλογή για τη διαχείριση ιδιωτικών κλειδιών. Περισσότερες λεπτομέρειες εδώ: https://serverfault.com/questions/131046/how-to-grant-iis-7-5-access-to-a-certificate-in-certificate-store/132791#132791
Το σφάλμα είναι γενικό και υπάρχουν πολλοί λόγοι για τους οποίους μπορεί να αποτύχει η διαπραγμάτευση SSL/TLS. Ο πιο συνηθισμένος είναι ένα άκυρο ή ληγμένο πιστοποιητικό διακομιστή, και το φροντίσατε αυτό παρέχοντας το δικό σας άγκιστρο επικύρωσης πιστοποιητικού διακομιστή, αλλά δεν είναι απαραίτητα ο μόνος λόγος. Ο διακομιστής μπορεί να απαιτεί αμοιβαίο έλεγχο ταυτότητας, μπορεί να έχει ρυθμιστεί με μια σουίτα κρυπτογράφησης που δεν υποστηρίζεται από τον πελάτη σας, μπορεί να έχει μια χρονική απόκλιση πολύ μεγάλη για να πετύχει η χειραψία και πολλοί άλλοι λόγοι.
Η καλύτερη λύση είναι να χρησιμοποιήσετε το σύνολο εργαλείων αντιμετώπισης προβλημάτων SChannel. Το SChannel είναι ο πάροχος SSPI που είναι υπεύθυνος για το SSL και το TLS και ο πελάτης σας θα το χρησιμοποιήσει για τη χειραψία. Ρίξτε μια ματιά στο Εργαλεία και ρυθμίσεις TLS/SSL.
Δείτε επίσης Πώς να ενεργοποιήσετε την καταγραφή συμβάντων του Schannel.