【问题标题】:how to pass ssl certificates to webserver when used firefox driver使用Firefox驱动程序时如何将ssl证书传递给网络服务器
【发布时间】:2013-06-25 00:49:04
【问题描述】:

我正在创建一个测试用例来测试一个使用 Capybara 和 selenium webdriver 的安全网站。

我要测试的 webapp 是安全的 https 类型,所以我需要将我的 ssl 证书(客户端证书)信息传递给 web 服务器以接受我的连接。 我知道当我通过 Rest 客户端请求时,我可以将 .pem 证书传递给 https 连接。

    cert = File.read('pem_file_location')
    http.use_ssl = true
    http.cert = OpenSSL::X509::Certificate.new(cert)
    http.key = OpenSSL::PKey::RSA.new(cert)
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE

如果我想通过 Firefox 驱动程序建立 https 连接,我正在寻找类似的方法。

我有一个解决方案,我创建自定义 firfox 配置文件并将证书合并到该配置文件中,并在我运行测试时使用它。但我不想要这个解决方案,因为我公司的 CI 服务器上不允许使用配置文件。

任何帮助将不胜感激

【问题讨论】:

    标签: cucumber capybara ssl-certificate selenium-webdriver


    【解决方案1】:

    好吧,如果您正在运行 Selenium Grid (as described here),您可以为 Firefox 的节点配置提供“acceptSslCerts=true”选项,理论上,只要证书来自浏览器随附的受信任的证书颁发机构之一。

    现在,如果您创建了自己的自定义 CA 授权,这将不起作用,除非您首先手动将 CA 导入浏览器 cacerts 存储。

    【讨论】:

    • djangofan,感谢您的回复。不,我没有使用网格。Out 应用程序功能非常简单,不需要网格。是的,我想使用自定义 CA 证书。但问题是我们无法访问 CI 来自定义 firefox 配置文件。我正在寻找一些可以动态创建配置文件并将证书详细信息传递到其中的东西。
    • 您可以将预构建的 Firefox 配置文件(预先导入您的证书 CA)的 .zip 存档签入到您的修订控制中,并且当您的 CI 签出代码时,它将拥有它。这对你来说是一个选择吗?
    • 再次感谢,这是我在我的开发机器上尝试过的一个选项。但根据公司政策,证书不允许存储在版本控制中。我可以将证书放在特定位置的 CI 服务器上,并且我想通过一些带有水豚的配置命令将此信息传递给 Firefox 驱动程序。这将有一个很好的解决方案。类似于我们用于 REST 请求的 net/http gem。而且我自己在 CI 服务器上的自定义配置文件也不是根据 compnay 的选项规范。
    • 似乎您可以动态构建配置文件,而无需通过从另一个站点下载 CA 将其存储在服务器上。然后使用 certutil 导入呢? stackoverflow.com/questions/1435000/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多