我正在尝试使用安全套接字层(HTTPS)与我的PHP脚本建立连接,但我发现为了确保最高的安全性/有效性,我必须将我的网站使用的SSL证书导入到我的应用程序中……我不知道该怎么办的东西.
如果它有帮助,我的SSL证书不是自签名的,而是由StartSSL提供并且我正在使用Eclipse IDE.
有人能指出我正确的方向吗?即我需要哪些文件,我应该在哪里导入它们以及我需要在Java中使用哪些代码等?
解决方法:
I have found out that to ensure maxium security/validity I have to import the SSL certificate that my website uses into my application
当你发表声明时,你是部分正确的.您无需导入SSL证书.导入StartSSL CA证书就足够了.
此外,没有将证书导入Java应用程序的事情. Java中的SSL支持依赖于密钥库和信任库的概念,而不依赖于应用程序中打包的某些证书.如果您要发布要由最终用户下载和执行的应用程序,则无需在应用程序中发布证书或私钥.私钥和关联的证书将存储在密钥库中,只有您可以访问.
应用程序的最终用户将依赖Java运行时内的SSL支持,这将使应用程序在验证服务器证书后建立到站点的SSL连接. Java运行时在信任库中附带一组默认的CA证书,并且成功建立SSL连接的唯一先决条件是服务器的SSL证书由信任库中的一个CA颁发. Java运行时的信任库中不存在StartSSL证书,至少从版本6开始,因此:
>您可以指示最终用户执行将StartSSL CA证书导入Java信任库的活动.可能有用的链接包括this StartSSL forum thread(只需要将CA证书导入信任库的前4个步骤),a GitHub project和this blog post;免责声明 – 我没有尝试使用其中任何一种,您应该自行承担使用它的风险.
>或者,您可以使用-Djavax.net.ssl.trustStore =< path_to_truststore>使用您自己的信任库初始化您的应用程序. -Djavax.net.ssl.trustStorePassword = LT; truststore_password> JVM启动标志,或在初始化SSL连接之前执行以下代码:
System.setProperty("javax.net.ssl.trustStore","");
System.setProperty("javax.net.ssl.trustStorePassword","");
这是一种可行的方法,只有当您的应用程序是一个不恰好是applet的Java SE应用程序时(或者对如何指定信任库具有类似限制的应用程序).
标签:java,ssl,ssl-certificate
来源: https://codeday.me/bug/20190923/1815689.html