如何在Selenium中处理SSL证书
Selenium 中的 SSL 证书
SSL(Secure Sockets Layer)是一种标准安全协议,用于在服务器和客户端(即浏览器)之间建立安全连接。
SSL(安全套接字层)证书使用强加密标准或数字签名确保数据在服务器和客户端应用程序之间安全传输。必须安装 SSL 证书或代码签名证书。
SSL 证书的优点
使用 SSL 证书有许多好处,例如:
- 可以增加用户和客户的信任,以快速促进业务增长
- 这些证书有助于保护在线交易和客户的敏感信息,如信用卡/借记卡数据等。
- 签名证书往往能获得最多的下载量和用户的好评。
SSL 安全网站以 https:// 开头,如果连接安全建立,您会看到一个锁定图标或绿色地址栏。
例如,如果您想通过网上银行进行交易,或者想通过 Flipkart 或 Amazon 等电子商务网站购买手机。
Web 浏览器和服务器之间发生了什么
- 浏览器尝试连接到受 SSL 保护的网站。浏览器请求 Web 服务器识别自身
- 服务器向浏览器发送其 SSL 证书的副本
- 浏览器验证 SSL 证书是否真实。如果真实,它会向服务器发送一条消息
- 服务器发回一个数字签名的确认以启动 SSL 加密会话
- 加密数据在服务器和浏览器之间共享
在此过程中,您需要传输敏感信息,例如信用卡号或登录凭据,并且这些信息必须安全传输,以免被黑客攻击或拦截。
例如
- 输入 https://netbanking.hdfcbank.com/netbanking/ 。
- 按回车键。
- 您将看到浏览器中出现绿色地址栏,如下所示:-
SSL 证书如何创建安全连接
- 浏览器向服务器发送 HTTPS 请求。
- 现在,服务器必须向浏览器提供一些识别信息,以证明它是受信任的。这可以通过向浏览器发送其 SSL 证书的副本来实现。
- 每个浏览器都有自己的受信任 CA 列表。浏览器会根据其受信任 CA 列表检查证书根,并检查证书是否未过期、未吊销,以及通用名称对于其连接的网站是否有效。
- 如果浏览器信任该证书,则在服务器和浏览器之间创建加密会话。
- 服务器和浏览器可以发送加密消息
SSL 证书的类型
浏览器和服务器使用 SSL 证书机制来建立安全连接。此连接涉及三种类型证书的验证。
- 根证书
- 中间证书
- 服务器证书
获取 SSL 证书的流程
获取 SSL 证书的流程包括以下步骤:-
- 首先,您必须创建 CSR(创建证书签名请求)请求。
- CSR 请求创建 CSR 数据文件,该文件发送给 SSL 证书颁发者,即 CA(证书颁发机构)。
- CA 使用 CSR 数据文件为您的服务器创建 SSL 证书。
- 收到 SSL 证书后,您必须将其安装到服务器上。
- 还需要安装一个中间证书,将您的 SSL 证书与 CA 的根证书关联起来。
下图表示所有三种证书——**根证书、中间证书和服务器证书。**
SSL 证书如何验证
SSL 通过网络服务器计算机和网络服务器浏览器中存在的程序和加密/解密例程的组合来工作。
SSL 证书基本上包含以下信息。
- 主题,即网站所有者的身份。
- 有效期信息——一个公共密钥和一个私有密钥。
私钥和公钥是两个唯一相关的加密密钥(数字)。公钥加密的任何内容只能通过私钥解密。
当由于证书原因导致服务器和客户端之间无法建立安全连接时,将出现以下 SSL 证书错误。
SSL 证书错误的类型
假设您在浏览器中键入某个 HTTPS 请求,并收到一条消息,例如“此连接不受信任”或“该站点的安全证书不受信任”,具体取决于您使用的浏览器。那么此类错误属于 SSL 证书错误。
现在,如果浏览器无法与请求的证书建立安全连接,则浏览器将抛出“不受信任的连接”异常,如下所示,并要求用户采取适当措施。
由于证书问题,您在不同浏览器中可能会看到以下类型的错误:
- 火狐 – 此连接不受信任
- 谷歌浏览器 -此网站安全性不受信任
- Internet Explorer (IE) – 此网站提供的安全证书未受信任的证书颁发机构 (CA) 信任
如何使用 Selenium Webdriver 处理 SSL 证书错误
假设我们编写了一些测试脚本,在执行脚本时,我们遇到了上面“不受信任的连接”的情况,那么我们如何纯粹通过自动化来处理异常呢。
在这种情况下,我们必须调整我们的脚本,使其能够自行处理 SSL 异常。
脚本需要根据我们使用的浏览器实例类型进行修改。这时,所需功能就派上用场了。
Desired Capabilities 用于配置 Selenium Webdriver 的驱动程序实例。通过 Desired Capabilities,可以配置所有驱动程序实例,如 ChromeDriver、FirefoxDriver 和 Internet Explorer。
目前我们还没有特定的 URL 来创建上述场景,但我提供了一些步骤,我们可以将其添加到 Selenium 脚本中来处理上述“不受信任的连接”情况。
Firefox 中的 SSL 证书错误处理
为了处理 Firefox 中的 SSL 证书错误,我们需要使用 Selenium Webdriver 的所需功能并遵循以下步骤。
步骤 1) 首先,我们需要创建一个新的 Firefox 配置文件,例如“myProfile”。您可以参考 Google 学习“如何创建”Firefox 配置文件。这很简单。
步骤 2) 现在在脚本中按如下方式访问 myProfile 并创建 FirefoxProfile 对象。
ProfilesIni prof = new ProfilesIni() FirefoxProfile ffProfile= prof.getProfile ("myProfile")
步骤 3) 现在我们需要在 Fire Fox 配置文件中设置“setAcceptUntrustedCertificates”和“setAssumeUntrustedCertificateIssuer”属性。
ffProfile.setAcceptUntrustedCertificates(true) ffProfile.setAssumeUntrustedCertificateIssuer(false)
步骤 4) 现在在 FireFox 驱动程序对象中使用 FireFox 配置文件。
WebDriver driver = new FirefoxDriver (ffProfile)
注意:“setAcceptUntrustedCertificates”和“setAssumeUntrustedCertificateIssuer”是处理网络浏览器中证书错误的功能。
Chrome 中的 SSL 证书错误处理
为了处理 Chrome 中的 SSL 错误,我们需要使用 Selenium Webdriver 的所需功能。下面的代码将帮助接受 Chrome 中的所有 SSL 证书,并且用户使用此代码将不会收到任何与 SSL 证书相关的错误。
我们需要创建 DesiredCapabilities 类的实例,如下所示:-
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为“override link”。您可以使用F12在HTML模式下查看此ID。
使用 driver.navigate() 方法并结合JavaScript,如下所示点击该链接:-
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 通过网络服务器计算机和网络服务器浏览器中存在的程序和加密/解密例程的组合来工作。
- 当由于证书原因导致服务器和客户端之间无法建立安全连接时,将发生 SSL 证书错误
- 需要调整我们的脚本,使其能够通过 Selenium Web driver 自行处理 SSL 异常/错误。