WebDriver SSL Certificate accepting not working on sub domain - selenium

I'm automating a Https login flow using FirefoxDriver(profile) in Java.
I get two SSL certificate warnings, one which: profile.setAcceptUntrustedCertificates(true) takes care of but for some reason the second SSL cert still shows and stops my script from running.
The only think I can think of is the second SLL cert shows on a different sub-domian (idapi.) where as the previous SLL cert was on id. But then I've checked the properties of the cert and the signature is the same.
How can I get past this issue?
I've tried setAssumeUntrustedCertificateIssuer(true) but it seems to have no effect.

did you try this way?
final DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
FirefoxDriver driver = new FirefoxDriver(capabilities);

Turns out it was the selenium version in my pom.xml file. For some reason 2.32.0 was not working (maybe a bug) but changing to 2.35.0 and the following code worked fine:
FirefoxProfile profile = new FirefoxProfile();
profile.setAcceptUntrustedCertificates(true);
profile.setAssumeUntrustedCertificateIssuer(false);
driver = new FirefoxDriver(profile);

Related

How to accept SSL Certificate in selenium chrome webdriver

I am not able to accept SSL Certificate in selenium chrome driver while accessing application url
first i need to access url, then i have to accept ssl certificate.. But while accessing url itself, ssl will get display and am not able to accept the certifictae since url is not opened yet
Can somebody help on this
Below solution will definatly work for you.
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("--ignore-certificate-errors");
System.setProperty("webdriver.chrome.driver",
System.getProperty("user.dir")+"/Drivers/chromedriver.exe");
driver = new ChromeDriver(options);
driver.get(applicationURL);
driver.manage().window().maximize();

ChromeDriver opens sites only with valid SSL certs

There are two instances of the same site, only difference is, that one uses a valid, another one uses an invalid HTTPS/SSL certification. I tried to open both in headless ChromeDriver 2.31 and found it opens site only with valid SSL certification.
<chromepath> --headless --remote-debugging-port=9101 --disable-gpu <siteurl>
Code above opens a site https://chrome-devtools-frontend.appspot.com/serve_file/identification_number with a preview from the given website.
I use this to ignore certificate problems, but I get the same blank page for this site in ChromeDriver.
caps.setCapability("chrome.switches", Arrays.asList("--ignore-certificate-errors"));
Late to the party, maybe it is useful to someone, the below parameter works for me.
acceptInsecureCerts: true
you can use DesiredCapabilities
DesiredCapabilities handlSSLErr = DesiredCapabilities.chrome ();
handlSSLErr.setCapability (CapabilityType.ACCEPT_SSL_CERTS, false);
WebDriver driver = new ChromeDriver (handlSSLErr);
Try it, may be it helps you.
Second way:
System.setProperty("webdriver.chrome.driver", "E:\\software and tools\\chromedriver_win32\\chromedriver.exe");
ChromeOptions option= new ChromeOptions();
option.addArguments("headless");
option.addArguments("ignore-certificate-errors");
WebDriver d=new ChromeDriver(option);
//d.get("http://expired.badssl.com/");
d.get("https://expired.badssl.com/");
Image for reference

Selenium - accept untrusted certificates

I do the following code with selenium:
FirefoxProfile profile = new FirefoxProfile();
profile.AcceptUntrustedCertificates = true;
I would need to know what it does to accept untrusted certificates (what does it changes in the options? how to do it manually, by which I mean I open Firefox and I modify the property that does it?)
The reason is this property solves problems, but I need to be able to do it to browser that are not being controlled by a selenium object.
It should be a method on the profile that takes a boolean!
profile.setAcceptUntrustedCertificates(true)
http://learn-automation.com/handle-untrusted-certificate-selenium/

certificate import selenium webdriver

Before running selenium there is a requirement that a certain certificate needs to be imported. On importing the same the execution starts as expected.
But each and everytime the execution re-starts (a new test suite is run), the certificate is no longer present in Firefox and hence fails as the certificate is not imported.
Is there any setting in selenium that will prevent the certificate from being unimported before the execution starts everytime/
-S
Create a new Firefox profile, import all your certificate in that profile and then use that profile while instantiating Firefox webdriver instance.
To create new Firefox profile refer this link.
Once you import your certificate to newly created profile, use below code to create Firefox webdriver instance:
ProfilesIni profile = new ProfilesIni();
FirefoxProfile profile = profile.getProfile("your_profile_name");
WebDriver driver = new FirefoxDriver(profile);
There are many ways to setup a FireFox profile in Selenium. You can setup a specific profile to use as #Surya mentioned above, or you can set setAcceptUntrustedCertificates to true for your profile:
FirefoxProfile profile = new FirefoxProfile();
profile.setAcceptUntrustedCertificates(true);
WebDriver driver = new FirefoxDriver(profile);
Other methods that I've seen using a RemoteWebDriver involve wrapping your profile in DesiredCapabilities which also has a flag for accepting SSL certificates:
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
FirefoxProfile profile = new FirefoxProfile();
profile.setAcceptUntrustedCertificates(true);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability(FirefoxDriver.PROFILE, profile);
WebDriver driver = new FirefoxDriver(capabilities);
Without seeing how you've setup your profile, we're only taking shots in the dark. Hopefully one of these suggestions works for you.

How to handle self signed certificate error in IE8 using Selenium Webdriver + Java

I am literally stuck to this problem for two days now.
Scenario:
The website that needs to be tested has a self signed certificate. So Internet Explorer (8 in windows XP_ shows
"The security certificate presented by this website was not issued by a trusted certificate authority.
The security certificate presented by this website was issued for a different website's address."
Now this is perfectly natural in case of IE8 and self-signing certificates so I took the following measures to no use
Manually added/installed the certificate as a Trusted Root Certificate in IE. But it doesn't get shown in the list, but it gets successfully added to all other tabs i.e. trusted root publisher,Intermediate Publisher Authority,Other People.
The same certificate gets added to firefox without any problems under "servers" and works just as expected.
I tried using the following codes but one of them worked for selenium
Proxy proxy = new Proxy();
proxy.setProxyType(ProxyType.MANUAL);
Proxy.setSslProxy("trustAllSSLCertificates");
DesiredCapabilities capabilities1 = DesiredCapabilities.internetExplorer();
capabilities1.setCapability(CapabilityType.PROXY, proxy);
When this doesn't work I tried using
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
I have the cybervillans certificate already installed.
I have tried the
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312 method knowing full well it is for win7.
5.I have even tried changing the URL to the issued authority but even then the problem persists.
And now I am stuck with no alternatives.
Can anyone point it out to me how I can proceed?
It seems I'm eternally stuck with IE8.
I have searched a lot in Google as well as in this site. But couldn't find a solution to my problem.
When I use selenium across our dev/test versions of our websites I constantly get the IE screen for invalid certificates.
To pass these, you send the following into the IWebDriver instance
driver.Navigate().GoToUrl("javascript:document.getElementById('overridelink').click()")
The screen you're seeing might be a little different to the bad certificate screen, so just tweak the getElementById selector to match the anchor's Id.
I use it like Robert wrote, like this:
if (driver instanceof InternetExplorerDriver) {
driver.navigate().to("javascript:document.getElementById('overridelink').click()");
}
This change will permanently accept all certificate errors in IE, but still, elegant solution:
https://stackoverflow.com/a/7738795/2546759