我有一个运行SSL证书的Jetty服务器,它有根->中间->主机证书链。
我在Windows上有一个连接到此服务器的Java客户端。我正在使用下面的系统属性来设置信任存储区,但它不起作用,除非我在Windows“受信任的根证书颁发机构”存储区中导入"host“证书。我在Windows的“中间证书颁发机构”存储中有中间证书和根证书,但Java没有选择它们并抛出SSL错误。然而,Chrome在没有任何警告的情况下工作得很好。
System.setProperty("javax.net.ssl.trustStore", "NUL");
System.setProperty("javax.net.ssl.trustStoreType", "Windows-ROOT");根据我的理解,即使客户机上有根证书或中介证书,Java也应该能够选择它。
是否需要将中间件和根目录放在"Trusted root authorities“存储下?放在“中间证书颁发机构”下不起作用吗?Java从哪个存储类别中挑选证书?
请帮帮忙。
发布于 2021-11-03 08:51:55
当服务器只返回叶证书而不返回中间证书时,就会发生这种情况。Does a TLS client needs to have intermediate CA in the trust store?解释说,这实际上是服务器问题,而不是客户端问题。按照这个建议,它解决了我的问题。
https://stackoverflow.com/questions/63610207
复制相似问题