Java和SSL证书

我正在尝试使用安全套接字层(HTTPS)与Java中的PHP脚本建立连接,但是我发现为了确保最大的安全性/有效性,我必须将网站使用的SSL证书导入到我的应用程序中…我不知道该怎么做。

如果有帮助,我的SSL证书不是自签名的,而是由StartSSL提供的,并且我正在使用Eclipse

IDE。

有人能指出我正确的方向吗?即,我需要什么文件,应该在哪里导入它们,以及在Java中需要什么代码,等等?

回答:

我发现要确保最高的安全性/有效性,我必须将网站使用的SSL证书导入到我的应用程序中

当您说那句话时,您部分正确。您不需要导入SSL证书。导入StartSSL CA证书就足够了。

此外,没有将证书导入Java应用程序的事情。Java中的SSL支持依赖于密钥库和信任库的概念,而不依赖于应用程序中打包的某些证书​​。如果您要发布要由最终用户下载并执行的应用程序,则无需发布证书或为此而在应用程序中使用私钥。私钥和关联的证书将存储在密钥库中,只有您可以访问。

应用程序的最终用户将依赖Java运行时中的SSL支持,这将使应用程序在验证服务器证书之后能够建立与站点的SSL连接。Java运行时在信任库中附带了一组默认的CA证书,要成功建立SSL连接,唯一的前提条件是服务器的SSL证书由信任库中的一个CA颁发。

版本6开始,至少 ,因此:

  • 您可以指示最终用户执行将StartSSL CA证书导入Java信任库的活动。可能有帮助的链接包括此StartSSL论坛线程(将CA证书导入到信任库中只需要前四个步骤),一个GitHub项目和此博客文章;免责声明-我没有尝试使用其中的任何一种,您应自行承担使用风险。
  • 或者,您可以使用-Djavax.net.ssl.trustStore=<path_to_truststore> -Djavax.net.ssl.trustStorePassword=<truststore_password>JVM启动标志使用自己的信任库初始化应用程序,或者在初始化SSL连接之前执行以下代码:
    System.setProperty("javax.net.ssl.trustStore","<path_to_truststore>");

    System.setProperty("javax.net.ssl.trustStorePassword”,”“);

仅当您的应用程序是不是恰好是applet的Java SE应用程序(或对如何指定信任库具有类似限制的应用程序)时,这才是可行的方法。


阅读Java

keytool文档也将有所帮助。

以上是 Java和SSL证书 的全部内容, 来源链接: utcz.com/qa/400685.html

回到顶部