我正在尝试使用安全套接字层(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开始,至少 在Java运行时的信任库中不存在StartSSL的证书 ,因此:
-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程序如何知道包含证书的密钥库在哪里?或者,如何告诉我的Java程序在哪里寻找密钥库? 在以某种方式指定了密钥库之后,如何指定用于对服务器进行身份验证的证书? 问题答案:
问题内容: 假设我编写了两个Java应用程序:并且它们被部署并在两个单独的服务器上运行(部署到和部署到),并且这两个应用程序需要通过SSL相互通信(双向)。我们还假设每个应用程序都有自己的SSL证书。 我(Java程序员)如何编码并验证彼此的SSL证书?每个CA是否都提供某种我可以使用的RESTful API ?Java是否有自己的证书验证API?我可以使用开放源代码的第三方JAR或服务吗? 当我
假设我编写了两个Java应用程序:和,它们在两个独立的服务器上部署和运行(部署到和部署到
我目前正在使用SSL编写一个网络TCP服务器。在生产中,我们最终将要求客户机使用证书进行身份验证。 为了在紧急情况下撤销证书,我们还希望建立CRL。 编辑:删除过时的Dropbox链接
问题内容: 我目前正在使用SSL编写网络TCP服务器。在生产中,我们最终将要求客户使用证书进行身份验证。 为了在紧急情况下吊销证书,我们还想建立一个CRL。 我的问题是:Java是否开箱即用地检查CRL(如果提供了证书),还是需要手动实施此类检查? 为了进行测试,我准备了带有CRL设置的证书,但是Java似乎没有尝试对其进行验证(我将其放入本地Web服务器中并且无法访问)。 我仅找到 _com.s