如何在Selenium WebDriver中处理SSL证书
什么是SSL证书?
SSL(安全套接字层)是用于在服务器和作为浏览器的客户端之间建立安全连接的标准安全协议。
SSL(安全套接字层)证书确保使用强加密标准或数字签名在服务器和客户端应用程序之间安全地转换数据。必须安装SSL证书或代码签名证书。
在本教程中,将了解-
- 什么是SSL证书?
- SSL证书的优点
- SSL证书如何创建安全连接
- SSL证书的类型
- 如何验证SSL证书
- SSL证书类型错误
- 如何使用Selenium WebDriver处理SSL证书错误
- Firefox中的SSL证书错误处理
- Chrome中的SSL证书错误处理
- IE中的SSL证书错误处理
SSL证书的优点
使用SSL证书有许多好处,例如,
- 可以增加用户和客户的信任,以促进业务的快速增长
- 这些证书有助于保护在线交易和客户敏感信息,如信用卡/借记卡数据等。
- 签署证书往往会获得最大的下载量和用户的好评。
受SSL保护的网站以https://开头,如果连接已安全建立,可以看到锁定图标或绿色地址栏。
例如,如果想通过网上银行进行交易,或者想通过Flipkart或Amazon等电子商务网站购买手机。
Web浏览器和服务器之间会发生什么
- 浏览器尝试连接使用SSL保护的网站。浏览器求web服务器标识其自身
- 服务器向浏览器发送其SSL证书的副本
- 浏览器验证SSL证书是否真实。如果是,它会向服务器发送一条消息
- 服务器发回数字签名确认以启动SSL加密会话
- 加密数据在服务器和浏览器之间共享
在此过程中,需要传输信用卡号码或登录凭据等敏感信息,并且这些信息必须安全传输,以免被黑客入侵或拦截。
例如
- 键入https://netbanking.hdfcbank.com/netbanking/。
- 按Enter键。
- 将在浏览器中看到一个绿色地址栏,如下所示:
SSL证书如何创建安全连接
- 浏览器向服务器发送HTTPS求。
- 现在服务器必须向浏览器提供一些标识,以证明它是可信的。这可以通过将其SSL证书的副本发送到浏览器来完成。
- 每个浏览器都有自己的受信任CA列表。浏览器根据其受信任CA列表检查证书根,并确保证书未过期、未吊销,以及公用名称对其连接到的网站有效。
- 如果浏览器信任证书,则会在服务器和浏览器之间创建加密会话。
- 服务器和浏览器可以发送加密消息
SSL证书的类型
浏览器和服务器使用SSL证书机制来建立安全连接。此连接涉及验证三种类型的证书。
- 根部
- 中级
- 服务器证书
获取SSL证书的过程
获取SSL证书的过程包括以下步骤:-
- 首先,必须创建CSR(创建证书签名求)求。
- CSR求创建CSR数据文件,该文件被发送到称为CA(Certificate Authority,证书颁发机构)的SSL证书颁发者。
- CA使用CSR数据文件为服务器创建SSL证书。
- 收到SSL证书后,必须将其安装在服务器上。
- 还需要安装一个中间证书,将SSL证书与CA的根证书捆绑在一起。
下图表示所有三个证书-根证书、中间证书和服务器证书。
如何验证SSL证书
SSL通过Web服务器计算机和Web服务器浏览器上存在的程序和加密/解密例程的组合工作。
SSL证书基本上包含以下信息。
- 主题,即网站所有者的身份。
- 有效性信息-公钥和私钥。
私钥和公钥是两个唯一相关的加密密钥(数字)。任何用公钥加密的东西都只能用私钥解密。
当服务器和客户端之间由于证书而没有建立安全连接时,将显示以下SSL证书错误。
SSL证书类型错误
假设在浏览器中键入一些https求,并收到诸如“此连接不可信”或“站点的安全证书不可信”之类的消息,具体取决于使用的浏览器。则此类错误会受到SSL证书错误的影响。
现在,如果浏览器无法与求的证书建立安全连接,则浏览器会抛出如下所示的“不可信连接”异常,并要求用户采取相应的措施。
由于不同浏览器中的证书,可能会看到如下所示的错误类型
-
Firefox-此连接不受信任
-
Google Chrome-此站点安全不受信任
-
Internet Explorer(IE)-此网站提供的此安全证书不受受信任的证书颁发机构(CA)信任
如何使用Selenium WebDriver处理SSL证书错误
假设我们已经编写了一些测试脚本,并且在执行脚本时,我们遇到了上面的“不可信连接”的情况,那么我们如何完全通过自动化来处理异常呢?
在这种情况下,我们必须调整脚本,使其能够自行处理SSL异常。
脚本需要根据我们使用的浏览器实例类型进行修改。当需要时,这些功能就会出现在画面中。
所需的功能用于配置Selenium Webdriver的驱动程序实例。通过所需的功能,可以配置所有驱动程序实例,如ChromeDriver、FirefoxDriver和Internet Explorer。
到目前为止,我们还没有任何特定的URL来创建上述场景,但是我提供了一些步骤,我们可以在Selenium脚本中添加这些步骤来处理上述情况“不可信的连接”。
Firefox中的SSL证书错误处理
为了在Firefox中处理SSL证书错误,我们需要使用Selenium Webdriver所需的功能,并执行以下步骤。
步骤1):首先,我们需要创建一个名为“myProfile”的新Firefox配置文件。这很简单,也很容易。
步骤2):现在访问脚本中的myProfile,如下所示,创建FirefoxProfile对象。 ProfilesIni prof = new ProfilesIni()
FirefoxProfile ffProfile= prof.getProfile (“myProfile”)
步骤3):现在我们需要在Fire Fox配置文件中设置“setAcceptUntrustedCertifates”和“setAssumeUntrustedCertificateIssuer”属性。 ffProfile.setAcceptUntrustedCertificates(true)
ffProfile.setAssumeUntrustedCertificateIssuer(false)
步骤4):现在在Firefox驱动程序对象中使用Firefox配置文件。 WebDriver driver = new FirefoxDriver (ffProfile)
注意:“setAcceptUntrustedCertifates”和“setAssumeUntrustedCertificateIssuer”是处理Web浏览器中证书错误的功能。
Chrome中的SSL证书错误处理
为了处理Chrome中的SSL错误,我们需要使用Selenium Webdriver所需的功能。下面的代码将帮助接受Chrome中的所有SSL证书,使用此代码的用户不会收到任何与SSL证书相关的错误。
我们需要创建DesiredCapability类的实例,如下所示: DesiredCapabilities handlSSLErr = DesiredCapabilities.chrome ()
handlSSLErr.setCapability (CapabilityType.ACCEPT_SSL_CERTS, true) WebDriver driver = new ChromeDriver (handlSSLErr);
IE中的SSL证书错误处理
与在Chrome浏览器和Firefox中处理SSL证书不同,在IE中,可能必须使用javascript来处理它。
要在IE中处理SSL证书,可以通过两种方式处理此情况。
- 在此,将单击“继续访问此网站(不推荐)”链接。在下面我们将看到如何处理IE中的SSL错误。
观察IE浏览器中的SSL证书错误,会发现“继续访问此网站(不推荐)”链接。此链接的ID为“覆盖链接”。可以使用F12在HTML模式下查看ID。
单击链接Using driver.navigate() Method withJavaScript如下: driver.navigate ().to (“javascript:document.getElementById(‘overridelink’).click()”);
- 第二种方法非常类似于Chrome SSL处理代码
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
System.setProperty("webdriver.ie.driver","IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver(capabilities);
上述代码将有助于处理IE中的SSL证书错误。
总结
- SSL(安全套接字层)是用于在服务器和客户端之间建立安全连接的标准安全协议
- 浏览器和服务器使用SSL证书机制来建立安全连接。
- SSL通过Web服务器计算机和Web服务器浏览器上存在的程序和加密/解密例程的组合工作。
- 当服务器和客户端之间由于证书而未建立安全连接时,将出现SSL证书错误
- 需要调整我们的脚本,使其能够通过Selenium Web Driver自行处理SSL异常/错误。