Πώς να χειριστείτε το πιστοποιητικό SSL Selenium

⚡ Έξυπνη Σύνοψη

Σφάλματα πιστοποιητικού SSL σταματούν ένα Selenium Δοκιμάστε τη στιγμή που ένα πρόγραμμα περιήγησης απορρίπτει ένα μη αξιόπιστο ή ληγμένο πιστοποιητικό, επομένως κάθε σενάριο WebDriver χρειάζεται μια δυνατότητα ειδική για το πρόγραμμα περιήγησης που αποδέχεται το πιστοποιητικό και επιτρέπει τη συνέχιση του αυτοματισμού.

  • 🔘 Ορισμός: Το SSL κρυπτογραφεί την κίνηση μεταξύ του προγράμματος περιήγησης και του διακομιστή και το πιστοποιητικό αποδεικνύει την ταυτότητα του διακομιστή.
  • ☑️ Ενεργοποίηση σφάλματος: Τα προγράμματα περιήγησης αποκλείουν μη αξιόπιστα, ληγμένα, ανακληθέντα ή αυτο-υπογεγραμμένα πιστοποιητικά και εμφανίζουν μια σελίδα προειδοποίησης.
  • ✅ Firefox: A Firefox Το προφίλ ορίζει τα setAcceptUntrustedCertificates και setAssumeUntrustedCertificateIssuer πριν από την εκκίνηση του προγράμματος οδήγησης.
  • 🧪 Χρώμιο: Το DesiredCapabilities με ACCEPT_SSL_CERTS αποδέχεται το πιστοποιητικό στις Selenium 2 και Selenium 3.
  • ️ Internet Explorer: A JavaΤο κλικ σε ένα σενάριο στο στοιχείο overridelink παρακάμπτει τη σελίδα προειδοποίησης.
  • ⚠️ Selenium 4: setAcceptInsecureCerts στο ChromeOptions, FirefoxΟι επιλογές ή το EdgeOptions αντικαθιστούν τις επιλογές DesiredCapabilities.

Πώς να χειριστείτε το πιστοποιητικό SSL Selenium

Πιστοποιητικό SSL σε Selenium

Το SSL (Secure Sockets Layer) είναι ένα τυπικό πρωτόκολλο ασφαλείας για τη δημιουργία μιας ασφαλούς σύνδεσης μεταξύ του διακομιστή και του πελάτη που είναι ένα πρόγραμμα περιήγησης.

Ένα πιστοποιητικό SSL προστατεύει τα δεδομένα που μετακινούνται μεταξύ του διακομιστή και της εφαρμογής-πελάτη με ισχυρή κρυπτογράφηση και ψηφιακή υπογραφή. Ο κάτοχος του ιστότοπου εγκαθιστά είτε ένα πιστοποιητικό SSL είτε ένα πιστοποιητικό υπογραφής κώδικα.

Πλεονεκτήματα του πιστοποιητικού SSL

Υπάρχουν πολλά οφέλη από τη χρήση του πιστοποιητικού SSL όπως,

  • Κάποιος μπορεί να αυξήσει την εμπιστοσύνη των χρηστών και των πελατών τους προκειμένου να ενισχύσει την ανάπτυξη της επιχείρησης γρήγορα
  • Αυτά τα πιστοποιητικά βοηθούν στην ασφάλεια των ηλεκτρονικών συναλλαγών και των ευαίσθητων πληροφοριών πελατών, όπως δεδομένα πιστωτικής/χρεωστικής κάρτας κ.λπ.
  • Η υπογραφή πιστοποιητικού τείνει να λαμβάνει μέγιστο αριθμό λήψεων και καλές κριτικές από τους χρήστες.

Οι ιστότοποι με ασφάλεια SSL ξεκινούν με https:// και μπορείτε να δείτε ένα εικονίδιο κλειδώματος ή μια πράσινη γραμμή διευθύνσεων εάν η σύνδεση έχει δημιουργηθεί με ασφάλεια.

Για παράδειγμα, εάν θέλετε να κάνετε κάποια συναλλαγή μέσω net banking ή θέλετε να αγοράσετε ένα Κινητό τηλέφωνο μέσω ιστότοπου ηλεκτρονικού εμπορίου όπως το Flipkart ή Amazon.

Τι συμβαίνει μεταξύ του προγράμματος περιήγησης Ιστού και του διακομιστή

  1. Ένα πρόγραμμα περιήγησης προσπαθεί να συνδεθεί με έναν ιστότοπο που είναι ασφαλισμένος με SSL. Το πρόγραμμα περιήγησης ζητά από τον διακομιστή ιστού να αναγνωρίσει τον εαυτό του
  2. Ο διακομιστής στέλνει στο πρόγραμμα περιήγησης ένα αντίγραφο του πιστοποιητικού SSL του
  3. Το πρόγραμμα περιήγησης επαληθεύει εάν το πιστοποιητικό SSL είναι γνήσιο. Εάν ναι, στέλνει ένα μήνυμα στον διακομιστή
  4. Ο διακομιστής στέλνει μια ψηφιακά υπογεγραμμένη επιβεβαίωση για να ξεκινήσει μια κρυπτογραφημένη περίοδος λειτουργίας SSL
  5. Τα κρυπτογραφημένα δεδομένα μοιράζονται μεταξύ του διακομιστή και του προγράμματος περιήγησης

Οι αριθμοί καρτών και τα διαπιστευτήρια σύνδεσης ταξιδεύουν κατά τη διάρκεια αυτής της συνεδρίας, επομένως η ανταλλαγή πρέπει να παραμένει κρυπτογραφημένη από άκρο σε άκρο και δεν μπορεί να υποκλαπεί.

Για παράδειγμα, το λουκέτο και η γραμμή διευθύνσεων παρακάτω επιβεβαιώνουν ότι το πιστοποιητικό έγινε δεκτό.

  1. Χαρακτηριστικά https://netbanking.hdfcbank.com/netbanking/ .
  2. Hit Enter.
  3. Θα δείτε μια πράσινη γραμμή διευθύνσεων στο πρόγραμμα περιήγησης όπως παρακάτω:-

Πράσινη γραμμή διευθύνσεων στο πρόγραμμα περιήγησης για μια σελίδα HDFC net banking ασφαλισμένη με SSL

Πώς το πιστοποιητικό SSL δημιουργεί μια ασφαλή σύνδεση

Το παρακάτω διάγραμμα tracη χειραψία και τα αριθμημένα βήματα που ακολουθούν εξηγούν κάθε ανταλλαγή.

Διάγραμμα της χειραψίας SSL μεταξύ ενός προγράμματος περιήγησης ιστού και ενός διακομιστή ιστού

  1. πρόγραμμα περιήγησης στέλνει αίτημα HTTPS στον διακομιστή.
  2. Τώρα ο διακομιστής πρέπει να παρέχει κάποια ταυτότητα στο πρόγραμμα περιήγησης για να αποδείξει ότι είναι αξιόπιστο. Αυτό μπορεί να γίνει στέλνοντας ένα αντίγραφο του πιστοποιητικού SSL στο πρόγραμμα περιήγησης.
  3. Κάθε πρόγραμμα περιήγησης έχει τη δική του λίστα με αξιόπιστες ΑΠ. Το πρόγραμμα περιήγησης ελέγχει τη ρίζα του πιστοποιητικού έναντι της λίστας με τις αξιόπιστες ΑΠ και ότι το πιστοποιητικό δεν έχει λήξει, δεν έχει ανακληθεί και ότι το κοινό όνομα είναι έγκυρο για τον ιστότοπο στον οποίο συνδέεται.
  4. Εάν το πρόγραμμα περιήγησης εμπιστεύεται το πιστοποιητικό, δημιουργείται μια κρυπτογραφημένη περίοδος λειτουργίας μεταξύ του διακομιστή και του προγράμματος περιήγησης.
  5. Ο διακομιστής και το πρόγραμμα περιήγησης μπορούν να στείλουν κρυπτογραφημένα μηνύματα

Τύποι Πιστοποιητικά SSL

Το πρόγραμμα περιήγησης και ο διακομιστής χρησιμοποιούν μηχανισμό πιστοποιητικού SSL για να μπορέσουν να δημιουργήσουν μια ασφαλή σύνδεση. Αυτή η σύνδεση περιλαμβάνει επαλήθευση τριών τύπων πιστοποιητικών.

  • Ρίζα
  • Ενδιάμεσος
  • Πιστοποιητικό διακομιστή

Διαδικασία λήψης πιστοποιητικού SSL

Η διαδικασία λήψης πιστοποιητικού SSL περιλαμβάνει τα παρακάτω βήματα:

  1. Αρχικά, πρέπει να δημιουργήσετε αίτημα CSR (δημιουργία αίτησης υπογραφής πιστοποιητικού).
  2. Το αίτημα CSR δημιουργεί αρχείο δεδομένων CSR, το οποίο αποστέλλεται στον εκδότη πιστοποιητικού SSL γνωστό ως CA (Αρχή πιστοποιητικών).
  3. Η αρχή αρχής χρησιμοποιεί τα αρχεία δεδομένων CSR για να δημιουργήσει πιστοποιητικό SSL για τον διακομιστή σας.
  4. Αφού λάβετε το πιστοποιητικό SSL, πρέπει να το εγκαταστήσετε στον διακομιστή σας.
  5. Απαιτείται επίσης ένα ενδιάμεσο πιστοποιητικό για να εγκατασταθεί το οποίο συνδέει το δικό σας πιστοποιητικό SSL με το πιστοποιητικό ρίζας της CA.

Η παρακάτω εικόνα αντιπροσωπεύει και τα τρία πιστοποιητικά- Πιστοποιητικό Root, Intermediate και Server.

Αλυσίδα πιστοποιητικών που εμφανίζει τα πιστοποιητικά SSL ρίζας, ενδιάμεσου και διακομιστή

Πώς επαληθεύονται τα πιστοποιητικά SSL

Το SSL λειτουργεί μέσω ενός συνδυασμού προγραμμάτων και ρουτίνας κρυπτογράφησης/αποκρυπτογράφησης που υπάρχουν στον υπολογιστή διακομιστή ιστού και στο πρόγραμμα περιήγησης διακομιστή ιστού.

Το πιστοποιητικό SSL περιέχει βασικά τις παρακάτω πληροφορίες.

  1. Θέμα που είναι η ταυτότητα του ιδιοκτήτη του ιστότοπου.
  2. Πληροφορίες εγκυρότητας - ένα δημόσιο και ένα ιδιωτικό κλειδί.

Το ιδιωτικό και το δημόσιο κλειδί είναι δύο μοναδικά συσχετιζόμενα κρυπτογραφικά κλειδιά (αριθμοί). Ό,τι κρυπτογραφείται με δημόσιο κλειδί μπορεί να αποκρυπτογραφηθεί μόνο με ιδιωτικό κλειδί. Ένα πρόγραμμα περιήγησης εμφανίζει αυτά τα πεδία κατά τον έλεγχο του πιστοποιητικού, όπως παρακάτω.

Παράθυρο λεπτομερειών πιστοποιητικού που παραθέτει το θέμα, την περίοδο ισχύος και το δημόσιο κλειδί

Όταν δεν έχει δημιουργηθεί μια ασφαλής σύνδεση μεταξύ του διακομιστή και του πελάτη λόγω του πιστοποιητικού, θα εμφανιστεί το ακόλουθο σφάλμα πιστοποιητικού SSL.

Τύποι σφαλμάτων πιστοποιητικού SSL

Ας υποθέσουμε ότι πληκτρολογείτε ένα αίτημα https και το πρόγραμμα περιήγησης απαντά με το μήνυμα "Αυτή η σύνδεση δεν είναι αξιόπιστη" ή "Το πιστοποιητικό ασφαλείας του ιστότοπου δεν είναι αξιόπιστο". Το πρόγραμμα περιήγησης δεν μπόρεσε να δημιουργήσει μια ασφαλή σύνδεση με το πιστοποιητικό που παρουσιάστηκε, επομένως σταματά και ζητά από τον χρήστη να προβεί στις κατάλληλες ενέργειες.

Οι τύποι σφαλμάτων που πιθανόν να δείτε λόγω πιστοποιητικού σε διαφορετικά προγράμματα περιήγησης μπορεί να είναι κάπως έτσι

  1. ΦωτιάFox - Η σύνδεση δεν είναι έμπιστη
  2. Google Chrome – Η ασφάλεια αυτού του ιστότοπου δεν είναι αξιόπιστη
  3. Internet Explorer (IE) – Αυτό το πιστοποιητικό ασφαλείας που παρουσιάζεται από αυτόν τον ιστότοπο δεν ήταν αξιόπιστο από αξιόπιστη αρχή έκδοσης πιστοποιητικών (CA)

Το παρακάτω στιγμιότυπο οθόνης δείχνει την ενδιάμεση διαφήμιση που παράγει ένα μη αξιόπιστο πιστοποιητικό.

Σελίδα προειδοποίησης μη αξιόπιστης σύνδεσης που εμφανίζεται από ένα πρόγραμμα περιήγησης για μη έγκυρο πιστοποιητικό SSL

Πώς να χειριστείτε το σφάλμα πιστοποιητικού SSL χρησιμοποιώντας Selenium Πρόγραμμα οδήγησης Web

Ας υποθέσουμε ότι το σενάριο δοκιμής εμφανίζεται η σελίδα "Μη αξιόπιστη σύνδεση" παραπάνω. Το σενάριο πρέπει να ρυθμιστεί έτσι ώστε να φροντίζει μόνο του την εξαίρεση SSL, αποκλειστικά μέσω αυτοματοποίηση.

Η αλλαγή εξαρτάται από την παρουσία του προγράμματος περιήγησης που χρησιμοποιείται και εδώ είναι που οι επιθυμητές δυνατότητες έρχονται στο προσκήνιο. Οι Επιθυμητές Δυνατότητες διαμορφώνουν την παρουσία του προγράμματος οδήγησης του Selenium Webdriver, συμπεριλαμβανομένου του ChromeDriver, FirefoxΠρόγραμμα οδήγησης και internet explorer.

Τα παρακάτω βήματα μπορούν να προστεθούν σε ένα Selenium script για να διαγράψετε την κατάσταση "Μη αξιόπιστη σύνδεση" για κάθε πρόγραμμα περιήγησης.

⚠️ Selenium Σημείωση 4: η κλάση DesiredCapabilities αφαιρέθηκε στο Selenium 4. Οι κλάσεις Επιλογών του προγράμματος περιήγησης φέρουν πλέον την ίδια ρύθμιση μέσω μιας ενιαίας δυνατότητας W3C, acceptInsecureCerts.

πρόγραμμα περιήγησης Selenium Κατηγορία 4 Καλέστε
Chrome Επιλογές Chrome setAcceptInsecureCerts(true)
Firefox FirefoxΕπιλογές setAcceptInsecureCerts(true)
άκρη EdgeOptions setAcceptInsecureCerts(true)
Safari JavascriptΕκτελεστής διαθήκης προσωρινό σενάριο παράκαμψης
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

Χειρισμός σφάλματος πιστοποιητικού SSL Firefox

Για τον χειρισμό του σφάλματος πιστοποιητικού SSL σε Firefox, πρέπει να χρησιμοποιήσουμε τις επιθυμητές δυνατότητες του Selenium Webdriver και ακολουθήστε τα παρακάτω βήματα.

Βήμα 1) Αρχικά, πρέπει να δημιουργήσουμε ένα νέο Firefox λογαριασμό σας λένε "το ΠΡΟΦΙΛ μου".

Βήμα 2) Τώρα αποκτήστε πρόσβαση στο myProfile στο σενάριο όπως παρακάτω και δημιουργήστε το FirefoxΑντικείμενο προφίλ.

ProfilesIni prof = new ProfilesIni()				
FirefoxProfile ffProfile= prof.getProfile ("myProfile")

Βήμα 3) Τώρα πρέπει να ορίσουμε τις ιδιότητες "setAcceptUntrustedCertificates" και "setAssumeUntrustedCertificateIssuer" στο Fire. Fox προφίλ.

ffProfile.setAcceptUntrustedCertificates(true) 
ffProfile.setAssumeUntrustedCertificateIssuer(false)

Βήμα 4) Τώρα χρησιμοποιήστε τη ΦωτιάFox προφίλ στη ΦωτιάFox αντικείμενο προγράμματος οδήγησης.

WebDriver driver = new FirefoxDriver (ffProfile)

Σημείωση: "setAcceptUntrustedCertificates" και "setAssumeUntrustedCertificateIssuer«είναι δυνατότητες για τη διαχείριση σφαλμάτων πιστοποιητικών σε προγράμματα περιήγησης ιστού.»

⚠️ Σημείωση έκδοσης: ο κώδικας που βασίζεται σε προφίλ παραπάνω στόχους Selenium 2 και Selenium 3. Επί Selenium 4 ένα προφίλ επισυνάπτεται μέσω FirefoxΕπιλογές και Firefox δέχεται μη ασφαλή πιστοποιητικά από προεπιλογή.

Χειρισμός σφαλμάτων πιστοποιητικού SSL στο Chrome

Για τον χειρισμό σφάλματος SSL στο Chrome, το αντικείμενο DesiredCapabilities παρακάτω δέχεται κάθε πιστοποιητικό SSL, επομένως ο χρήστης δεν βλέπει καμία προειδοποίηση πιστοποιητικού κατά την εκτέλεση.

Πρέπει να δημιουργήσουμε παράδειγμα της κλάσης DesiredCapabilities ως εξής:-

DesiredCapabilities handlSSLErr = DesiredCapabilities.chrome ()       
handlSSLErr.setCapability (CapabilityType.ACCEPT_SSL_CERTS, true)
WebDriver driver = new ChromeDriver (handlSSLErr);

⚠️ Σημείωση έκδοσης: Το CapabilityType.ACCEPT_SSL_CERTS ανήκει στο παλιό πρωτόκολλο JSON Wire. Αντικαταστήστε το με το απόσπασμα ChromeOptions που εμφανίστηκε νωρίτερα κατά την εκτέλεση. Selenium 4.

Χειρισμός σφαλμάτων πιστοποιητικού SSL στον IE

Σε αντίθεση με το χειρισμό πιστοποιητικών SSL στο πρόγραμμα περιήγησης Chrome και Firefox, στον IE, ίσως χρειαστεί να το χειριστείτε χρησιμοποιώντας javascript.

Για να χειριστείτε ένα πιστοποιητικό SSL στον IE, μπορείτε να χειριστείτε αυτήν την κατάσταση με δύο τρόπους.

Μέθοδος 1) Κάντε κλικ στον σύνδεσμο "Συνέχεια σε αυτόν τον ιστότοπο (δεν συνιστάται)" στην παρενθετική διαφήμιση. Αυτός ο σύνδεσμος φέρει το αναγνωριστικό "overridelink", το οποίο μπορείτε να επιβεβαιώσετε στο παράθυρο HTML που ανοίγει με το πλήκτρο F12, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

Προειδοποίηση πιστοποιητικού του Internet Explorer με τον σύνδεσμο παράκαμψης Συνέχεια σε αυτόν τον ιστότοπο

Κάντε κλικ στον σύνδεσμο χρησιμοποιώντας τη μέθοδο driver.navigate() with JavaΣενάριο όπως παρακάτω: -

driver.navigate ().to ("javascript:document.getElementById('overridelink').click()");

Μέθοδος 2) Η δεύτερη μέθοδος είναι αρκετά παρόμοια με τον κώδικα χειρισμού SSL του Chrome.

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
System.setProperty("webdriver.ie.driver","IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver(capabilities);

Ο παραπάνω κώδικας θα βοηθήσει στον χειρισμό του σφάλματος πιστοποιητικού SSL στον IE.

⚠️ Σημείωση έκδοσης: Ο Internet Explorer 11 αποσύρθηκε τον Ιούνιο του 2022. Εκτελέστε το ίδιο σενάριο σε Microsoft Edge με το EdgeOptions ή οδηγήστε το Edge σε λειτουργία IE όπου μια παλαιότερη εφαρμογή το απαιτεί ακόμα.

Συχνές Ερωτήσεις

Το έργο Chromium εκτελείται badssl.com, το οποίο εξυπηρετεί υποτομείς που έχουν λήξει, έχουν υπογραφεί αυτόματα, έχουν ανακληθεί και έχουν λάθος φιλοξενία. Στρέψτε ένα δοκιμαστικό σενάριο στο expired.badssl.com για να αναπαράγετε με ασφάλεια ένα πραγματικό σφάλμα πιστοποιητικού.

Όχι. Selenium 4 το αφαίρεσε υπέρ των κλάσεων Επιλογές προγράμματος περιήγησης. Δημιουργήστε ένα ChromeOptions, FirefoxΣτο αντικείμενο Options ή EdgeOptions, καλέστε την εντολή setAcceptInsecureCerts(true) και μεταβιβάστε την στον κατασκευαστή του προγράμματος οδήγησης.

Δημιουργήστε ένα αντικείμενο EdgeOptions, καλέστε την εντολή setAcceptInsecureCerts(true) και μεταβιβάστε την στον κατασκευαστή EdgeDriver. Το μοτίβο ταιριάζει με το Chrome επειδή και τα δύο προγράμματα περιήγησης χρησιμοποιούν από κοινού τη μηχανή Chromium.

Το SafariDriver δεν διαθέτει διακόπτη accept-insecure-certs. Χρησιμοποιήστε το JavascriptΕκτελεστής για την εκτέλεση της συνάρτησης CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass(), η οποία διαγράφει την ενδιάμεση σελίδα μόνο για αυτήν την περίοδο λειτουργίας.

Το ERR_CERT_DATE_INVALID σηματοδοτεί ένα πιστοποιητικό που έχει λήξει, το ERR_CERT_REVOKED ένα ανακληθέν και το ERR_CERT_AUTHORITY_INVALID ένα αυτο-υπογεγραμμένο πιστοποιητικό ή έναν μη αξιόπιστο εκδότη. Ο κώδικας κατονομάζει την αιτία πριν αλλάξετε οποιοδήποτε σενάριο.

Η μηχανική μάθηση ομαδοποιεί τις αποτυχίες πιστοποιητικών με βάση τον κωδικό σφάλματος και τον κεντρικό υπολογιστή, διαχωρίζοντας ένα ληγμένο πιστοποιητικό σταδιοποίησης από ένα γνήσιο ελάττωμα. Αυτή η ομαδοποίηση εμποδίζει την καταγραφή ενός προβλήματος περιβάλλοντος ως πολλά άσχετα σφάλματα δοκιμών.

Ναί. GitHub Copilot δημιουργεί το αντικείμενο Options και τον κατασκευαστή του προγράμματος οδήγησης από ένα σχόλιο, αλλά ελέγχει ότι προτείνει setAcceptInsecureCerts αντί για την κλήση DesiredCapabilities που έχει αφαιρεθεί.

Μόνο σε περιβάλλοντα δοκιμών. Η αποδοχή όλων των πιστοποιητικών αποκρύπτει τα ελαττώματα λήξης, ονόματος κεντρικού υπολογιστή και αλυσίδας, επομένως κρατήστε τη σημαία εκτός των δοκιμών καπνού παραγωγής και επιβεβαιώστε ρητά το πιστοποιητικό όταν η ασφάλεια βρίσκεται υπό δοκιμή.

Συνοψίστε αυτήν την ανάρτηση με: