使用来自Java的证书登录到WebPage

时间:2018-12-05 23:18:47

标签: java ssl https certificate

我有一个网页,要求提供SSL证书,然后使用SSL证书自动填充用户名,然后等待用户输入用户密码并单击按钮以继续进行应用程序本身。

我想做的是创建一个小的Java应用程序,该应用程序会自动记录通过证书,用户名和密码的用户,然后在默认浏览器中打开该应用程序。

我在想 1-发送初始GET请求以收集会话ID, 2-发送通过证书,用户名和密码的POST请求 3-在浏览器中打开请求的安全网页。

我知道如何使用HttpsURLConnection来执行前2个步骤,但是我不确定此工作流程是否有意义,因为一旦身份验证,我不知道如何执行第3步。

这是正确的方法吗?

谢谢大家的帮助。

1 个答案:

答案 0 :(得分:0)

大家好,只是为那些有类似问题的人编写此解决方案,因为也许他们将不必为此付出更多的努力。

我们有一个Cloud解决方案,需要用户名+密码+ SSL证书才能登录。 我希望可以在浏览器窗口中打开一个传递参数的页面,而不必登录或从可用证书列表中选择证书。

所以我最初的方法没有按我希望的那样工作,因此我开始研究使用Selenium打开Web页传递参数。 一切正常,我将程序配置为在首次启动时询问用户名和密码,并将其保存在Windows用户配置文件中的加密文件中。

我唯一遇到的障碍就是从浏览器显示的可用证书列表中自动选择证书。 关于此问题,有很多不同的文章,并且大多数并不是真正可扩展的,直到我找到一种解决方案为止:Chrome提供了设置一个特定策略的可能性,该策略称为“ AutoSelectCertificateForUrls”,该策略允许为特定的URL指定一个证书即会自动选择。因此,我将安装程序配置为设置此参数(需要在Windows注册表中设置),这可以解决问题。 每个Windows用户都将其证书存储在“当前用户证书存储”中,并将其凭据存储在Windows用户配置文件中。

唯一的限制是,目前您只能指定证书颁发者公司(因此,如果您有来自同一公司的多个证书,则只有第一个证书可以使用),但是显然Chromium团队正在努力能够过滤“主题”(此问题也帮助了我: Chrome AutoSelectCertificateForUrls Filter on Subject。我希望这对其他人有帮助。