我在地址为(/usr/java/jdk1.6.0_29/jre/lib/security/cacerts
)的位置拥有一个cacerts文件,因此我的java应用程序会在此位置搜索密钥库文件。
然而,考虑到我的Java版本非常旧,并且只有当JRE升级时cacerts文件才会更新CA根证书,这是相当罕见的(取决于开发优先级),我所理解的是,当某些外部第三方引入未存在于我的cacerts文件中的新第三方证书时,我的Java应用程序将受到影响。
因此,在查看了几个选项后,我发现需要使用属性-Djavax.net.ssl.trustStore并将其值设置为位于JRE之外的cacerts文件位置。因此,应用程序将搜索位于JRE之外的cacerts文件,然后引用它到我的默认cacerts文件。
那么我的问题是为什么这样做?将其放在JRE之外的优点是什么(使其独立于JRE)?
由于它独立于JRE,它会不会寻找新的第三方根证书,因此我的JAVA应用程序就不会受到影响?或者它与属性'javax.net.ssl.trustStore'有关。
我已经参考了这里,但是有没有人能够让我理解这一点,因为我没有清晰的图片。
SSLSocket
产生影响,因为未被您的密钥库识别的CA将阻止连接建立。但是我感觉这里还有更多需要解释的地方... - fge