Come gestire il certificato SSL in Selenium
⚡ Riepilogo intelligente
Gli errori del certificato SSL bloccano un Selenium È necessario testare il momento in cui un browser rifiuta un certificato non attendibile o scaduto, quindi ogni script WebDriver deve avere una funzionalità specifica per il browser che accetti il certificato e consenta all'automazione di proseguire.
Certificato SSL in Selenium
SSL (Secure Sockets Layer) è un protocollo di sicurezza standard per stabilire una connessione sicura tra il server e il client che è un browser.
Un certificato SSL protegge i dati che transitano tra il server e l'applicazione client tramite una crittografia robusta e una firma digitale. Il proprietario del sito installa un certificato SSL o un certificato di firma del codice.
Vantaggi del certificato SSL
Esistono numerosi vantaggi nell'utilizzo del certificato SSL come,
- È possibile aumentare la fiducia dei propri utenti e clienti al fine di migliorare rapidamente la crescita del business
- Questi certificati aiutano a proteggere le transazioni online e le informazioni sensibili dei clienti come i dati delle carte di credito/debito, ecc.
- Il certificato di firma tende a ottenere un numero massimo di download e buone recensioni da parte degli utenti.
I siti Web protetti da SSL iniziano con https:// e puoi vedere l'icona di un lucchetto o una barra degli indirizzi verde se la connessione è stabilita in modo sicuro.
Ad esempio, se desideri effettuare qualche transazione tramite net banking o desideri acquistare un file Mobile telefono tramite sito di e-commerce come Flipkart o Amazon.
Cosa succede tra il browser Web e il server
- Un browser tenta di connettersi a un sito Web protetto con SSL. Il browser richiede al server web di identificarsi
- Il server invia al browser una copia del suo certificato SSL
- Il browser verifica se il certificato SSL è autentico. In tal caso, invia un messaggio al server
- Il server restituisce un riconoscimento firmato digitalmente per avviare una sessione crittografata SSL
- I dati crittografati vengono condivisi tra il server e il browser
I numeri di carta e le credenziali di accesso transitano durante la stessa sessione, pertanto lo scambio deve rimanere crittografato end-to-end e non può essere intercettato.
Ad esempio, il lucchetto e la barra degli indirizzi sottostanti confermano che il certificato è stato accettato.
- Tipo https://netbanking.hdfcbank.com/netbanking/ .
- Hit Enter.
- Vedrai una barra degli indirizzi verde nel browser come di seguito: -
In che modo il certificato SSL crea una connessione sicura
Il diagramma sottostante tracLa stretta di mano è il gesto iniziale, e i passaggi numerati che seguono spiegano ogni scambio.
- Browser invia la richiesta HTTPS al server.
- Ora il server deve fornire un'identificazione al browser per dimostrare che è affidabile. Questo può essere fatto inviando una copia del suo certificato SSL al browser.
- Ciascun browser dispone del proprio elenco di CA attendibili. Il browser controlla la radice del certificato rispetto al suo elenco di CA attendibili e verifica che il certificato non sia scaduto, non revocato e che il nome comune sia valido per il sito Web a cui si sta connettendo.
- Se il browser considera attendibile il certificato, viene creata una sessione crittografata tra il server e il browser.
- Il server e il browser possono inviare messaggi crittografati
Tipi di certificati SSL
Il browser e il server utilizzano il meccanismo del certificato SSL per poter stabilire una connessione sicura. Questo collegamento prevede la verifica di tre tipologie di certificati.
- Radice
- Intermedio
- Certificato del server
Processo per ottenere il certificato SSL
Il processo per ottenere il certificato SSL include i seguenti passaggi: -
- Innanzitutto, è necessario creare una richiesta CSR (creare una richiesta di firma del certificato).
- La richiesta CSR crea un file di dati CSR, che viene inviato all'emittente del certificato SSL noto come CA (Certificate Authority).
- La CA utilizza i file di dati CSR per creare il certificato SSL per il tuo server.
- Dopo aver ricevuto il certificato SSL, devi installarlo sul tuo server.
- È inoltre necessario installare un certificato intermedio che colleghi il tuo certificato SSL al certificato radice della CA.
L'immagine seguente rappresenta tutti e tre i certificati: Certificato root, intermedio e server.
Come vengono verificati i certificati SSL
SSL funziona attraverso una combinazione di programmi e routine di crittografia/decrittografia esistenti sul computer del server Web e sul browser del server Web.
Il certificato SSL contiene fondamentalmente le seguenti informazioni.
- Oggetto che rappresenta l'identità del titolare del sito web.
- Informazioni sulla validità: una chiave pubblica e una privata.
La chiave privata e la chiave pubblica sono due chiavi crittografiche (numeri) univocamente correlate. Tutto ciò che viene crittografato con una chiave pubblica può essere decrittografato solo con una chiave privata. Un browser visualizza questi campi quando si esamina il certificato, come mostrato di seguito.
Se non viene stabilita una connessione sicura tra il server e il client a causa del certificato, verrà visualizzato il seguente errore del certificato SSL.
Tipi di errori del certificato SSL
Supponiamo che tu digiti una richiesta HTTPS e il browser risponda con "Questa connessione non è attendibile" o "Il certificato di sicurezza del sito non è attendibile". Il browser non è riuscito a stabilire una connessione sicura con il certificato presentato, quindi interrompe la richiesta e chiede all'utente di intraprendere le azioni appropriate.
I tipi di errore che potresti vedere a causa del certificato nei diversi browser potrebbero essere simili a questi
- AntincendioFox - Questa connessione non è sicura
- Google Chrome – La sicurezza di questo sito non è affidabile
- Internet Explorer (IE) – Questo certificato di sicurezza presentato da questo sito Web non è stato considerato attendibile da un'autorità di certificazione (CA) attendibile
Lo screenshot qui sotto mostra l'interstiziale generato da un certificato non attendibile.
Come gestire l'errore del certificato SSL utilizzando Selenium Webdriver
Supponiamo che il file script di prova raggiunge la pagina "Connessione non attendibile" sopra. Lo script deve essere modificato in modo che gestisca l'eccezione SSL da solo, esclusivamente tramite automazione.
La modifica dipende dall'istanza del browser in uso, ed è qui che entrano in gioco le funzionalità desiderate. Le funzionalità desiderate configurano l'istanza del driver di Selenium Webdriver, incluso ChromeDriver, FirefoxDriver e Internet Explorer.
I passaggi seguenti possono essere aggiunti a un Selenium Script per risolvere la situazione di "Connessione non attendibile" per ciascun browser.
⚠️ Selenium Nota del 4: la classe DesiredCapabilities è stata rimossa in Selenium 4. Le classi Opzioni del browser ora trasportano la stessa impostazione tramite un'unica funzionalità W3C, accettaCertificatiNonSicuri.
| Browser | Selenium classe 4 | Bando |
|---|---|---|
| Chrome | ChromeOptions | setAcceptInsecureCerts(true) |
| Firefox | FirefoxOpzioni | setAcceptInsecureCerts(true) |
| bordo | EdgeOptions | setAcceptInsecureCerts(true) |
| Safari | Javascriptesecutore | script di bypass temporaneo |
ChromeOptions options = new ChromeOptions(); options.setAcceptInsecureCerts(true); WebDriver driver = new ChromeDriver(options);
Gestione degli errori del certificato SSL Firefox
Per gestire l'errore del certificato SSL in Firefox, dobbiamo utilizzare le capacità desiderate di Selenium Webdriver e seguire i passaggi seguenti.
Passo 1) Per prima cosa dobbiamo creare un nuovo Firefox tuo profilo dire "il mio profilo".
Passo 2) Ora accedi a myProfile nello script come di seguito e crea il file FirefoxOggetto profilo.
ProfilesIni prof = new ProfilesIni() FirefoxProfile ffProfile= prof.getProfile ("myProfile")
Passo 3) Ora dobbiamo impostare le proprietà “setAcceptUntrustedCertificates” e “setAssumeUntrustedCertificateIssuer” nel Fire Fox profilo.
ffProfile.setAcceptUntrustedCertificates(true) ffProfile.setAssumeUntrustedCertificateIssuer(false)
Passo 4) Ora usa il fuocoFox profilo nel FuocoFox oggetto conducente.
WebDriver driver = new FirefoxDriver (ffProfile)
Nota: "setAcceptUntrustedCertificates" e "setAssumeUntrustedCertificateIssuer“sono funzionalità per gestire gli errori dei certificati nei browser web.
⚠️ Nota sulla versione: il codice basato sul profilo sopra indicato mira Selenium 2 e Selenium 3. Sopra Selenium 4 un profilo è allegato tramite FirefoxOpzioni e Firefox Accetta certificati non sicuri per impostazione predefinita.
Gestione degli errori del certificato SSL in Chrome
Per gestire gli errori SSL in Chrome, l'oggetto DesiredCapabilities riportato di seguito accetta tutti i certificati SSL, in modo che l'utente non visualizzi alcun avviso relativo al certificato durante l'esecuzione.
Dobbiamo creare un'istanza della classe DesiredCapabilities come di seguito: -
DesiredCapabilities handlSSLErr = DesiredCapabilities.chrome () handlSSLErr.setCapability (CapabilityType.ACCEPT_SSL_CERTS, true) WebDriver driver = new ChromeDriver (handlSSLErr);
⚠️ Nota sulla versione: CapabilityType.ACCEPT_SSL_CERTS appartiene al vecchio protocollo JSON Wire. Sostituiscilo con il frammento di ChromeOptions mostrato in precedenza durante l'esecuzione Selenium 4.
Gestione degli errori del certificato SSL in IE
A differenza della gestione dei certificati SSL nel browser Chrome e Firefox, in IE, potrebbe essere necessario gestirlo utilizzando javascript.
Per gestire i certificati SSL in Internet Explorer, è possibile procedere in due modi.
Metodo 1) Fai clic sul link "Continua su questo sito web (sconsigliato)" nell'interstitial. Tale link ha l'ID "overridelink", che puoi verificare nel riquadro HTML che si apre premendo F12, come mostrato nello screenshot qui sotto.
Fare clic sul collegamento utilizzando il metodo driver.navigate() con JavaScript come di seguito:
driver.navigate ().to ("javascript:document.getElementById('overridelink').click()");
Metodo 2) Il secondo metodo è abbastanza simile al codice di gestione SSL di Chrome.
DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); System.setProperty("webdriver.ie.driver","IEDriverServer.exe"); WebDriver driver = new InternetExplorerDriver(capabilities);
Il codice sopra riportato aiuterà a gestire l'errore del certificato SSL in IE.
⚠️ Nota sulla versione: Internet Explorer 11 è stato ritirato nel giugno 2022. Esegui lo stesso scenario contro Microsoft Edge con EdgeOptions, oppure utilizza Edge in modalità IE laddove un'applicazione legacy lo richieda ancora.





