Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SSL CA证书安装_Java_Ssl_Https - Fatal编程技术网

Java SSL CA证书安装

Java SSL CA证书安装,java,ssl,https,Java,Ssl,Https,我有这个问题:我正在尝试正确安装SSL证书,以便通过https使用我的页面,我有以下情况: 我继续做了通常的事情:创建密钥库和私钥,创建并将.csr文件发送给我们的CA以供批准,并取回所有SSL证书:root.p7b、chain.p7b、网站的s.p7b和chain.pem 但是,在导入上述证书时,我偶然发现了以下错误: “keytool error:java.lang.Exception:Public keys in reply and keystore not match”然后通过阅读我发现

我有这个问题:我正在尝试正确安装SSL证书,以便通过https使用我的页面,我有以下情况:

我继续做了通常的事情:创建密钥库和私钥,创建并将.csr文件发送给我们的CA以供批准,并取回所有SSL证书:root.p7b、chain.p7b、网站的s.p7b和chain.pem

但是,在导入上述证书时,我偶然发现了以下错误: “keytool error:java.lang.Exception:Public keys in reply and keystore not match”然后通过阅读我发现java除了应用程序的keystore之外还有自己的cacerts文件,所以我继续将根证书安装到java的keystore中,然后我能够在应用程序的keystore中安装其余的ssl证书,但现在,当我尝试访问我的应用程序的网页时,我的浏览器(Firefox、Iexplorer)抱怨我的应用程序网页证书不合法,并显示“此连接不可信”消息,我已经尝试将我从CA发送的所有可用证书安装到JAVA的cacert文件中,并且也将所有证书安装在我的应用程序的密钥库中,还尝试了不同的编码格式、不同的安装顺序等,但都没有用

请帮忙。任何看似微不足道的建议都是非常受欢迎的。 和平
Jesse

您需要在浏览器的信任存储中安装相同的CA证书

我相信拉古是正确的。我特别认为,您需要将链导入浏览器信任库(在本地工作站/机器上)。您已经在服务器端完成了所有需要做的事情

该链接非常古老,但它提供了您需要执行的操作要点: 杰西:

根据描述,您似乎正在使用Tomcat作为服务器

请尝试执行以下步骤:

  • 首先,通过运行以下命令检查密钥库文件的内容:
  • keytool-v-list-keystore sample.jks

  • 如果只看到一个条目,即私钥条目,则向下滚动并检查颁发给的
    和由
    颁发的
    。如果两者相同,则证书尚未导入密钥库。注意:复制别名(例如test)

  • 如果是这种情况,请运行下面的命令(假设您从CA接收到p7b文件)

  • keytool-import-keystore sample.jks-alias test-file ca.p7b


    现在再次运行第一个命令并检查内容。您应该可以看到在别名下成功导入的证书。

    您可以看到出现问题的原因是,当我尝试访问该页面时,技术错误表明正在使用的证书是自签名的,因此该页面可能存在风险!老实说,我不知道为什么,我的JAVA cacert文件和应用程序密钥库中都有相同的证书:-(是的,除非您通过将自签名证书添加到浏览器信任存储区来信任它们,否则自签名证书会出现此错误。这里没有什么不寻常的情况。Raghu:但是证书不是自签名的,我将我的.csr发送到了一个著名的CA,我得到的证书正是那些给我带来麻烦的证书。是域(CN)证书的名称与您的环境相匹配。例如,您必须以CN的形式输入Jess.com,您将在其中使用localhost进行测试。请在这方面帮助我,但据我所知,由于它是由知名CA提供的ssl,因此域将不重要,因为该页面可通过internet免费提供给任何客户端。您不认为吗?谢谢对于链接,虽然我忘了提到我的web服务器是久负盛名的Tomcat。这会改变事情吗?不,不会。因为这里的关键是Tomcat是通过SSL为您的浏览器不信任的网页提供服务。将该链导入浏览器的信任库是告诉您的浏览器Tomcat使用的证书的方式是可信的(从而防止浏览器向您发送的消息告诉您它不可信)。看起来我无法向其他人的帖子发表评论-因此我将在此处添加评论…如果您继续通过浏览器中给出的提示,则可以查看证书。确保您在此处看到的证书(通过浏览器)就是你所期待的。