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