我已经阅读了很多关于证书导入的文章,但我对一些事情仍然不清楚。
从Java应用程序[在本例中为JBOSS Web应用程序]连接到SSL站点时,是否需要先在应用程序服务器上显式安装客户端证书?
我可以手动安装客户端证书,但是有一个到期日期。因此,我需要在应用程序服务器上管理所有客户端安装的证书的到期日期,并停止更新每个证书。 感觉应该有更好的方式。 应用程序不应自动接受有效的签名证书吗? [在这种情况下,它由VeriSign签署]
我们正在尝试从应用程序访问https网址而不显式安装证书时遇到异常。 API代理库正在吞噬内部异常,所以我不知道细节。
如果证书应该被自动接受,那么这里可能存在不同的问题......
答案 0 :(得分:0)
是否可以使用已签名的证书而无需明确导入?
是的,它不需要在使用前安装。事实上,如果您事先知道会发生什么,那么您可以将该信息包含在应用程序中。这有助于改善应用程序的安全状况。
要避免导入证书,请使用自定义X509TrustManager
并覆盖checkServerTrusted
。在checkServerTrusted
中,确保预期服务器的公钥(即pin the server's certificate or public key);或验证服务器的证书是否有效(即,是否在有效期内并形成您信任根的链)。
从Java应用程序[在本例中为JBOSS Web应用程序]连接到SSL站点时,是否需要先在应用程序服务器上显式安装客户端证书?
在客户端证书的情况下,服务器通告其依赖的颁发者颁发客户端证书。因此,服务器需要知道发出客户端证书的信任点,以便对客户端进行身份验证。
在这种情况下,它由VeriSign签署
这可能真的很糟糕。在这种情况下,您将信任在Verisign PKI下签署的所有您的客户端,以及Verisign PKI下签署的所有Verisign 其他客户端。
在这种情况下,最好避免使用公共CA并运行自己的PKI(即成为您自己的CA)。在这种情况下,请选取Network Security with OpenSSL的副本。本书将向您展示如何使用openssl
命令和以编程方式完成习惯任务。