(http://blog.csdn.net/fenglibing/article/details/16842543)
如果是要发起SSL请求,这个时候通常是需要指定trustStore的,当然如果你使用自签名那是不需要的(查看如何使用自签名,查看这篇文章 http://blog.csdn.net/fenglibing/article/details/16842527 )。
一种方式是通过在启动参数中指定,如下:
java -Djavax.net.ssl.trustStore=yourTruststore.jks -Djavax.net.ssl.trustStorePassword=123456 YourApp
还是一种就是通过程序中指定Properties参数进行加载,不过一定要在请求发出之前进行加载,如下:
Properties systemProps = System.getProperties();
systemProps.put( "javax.net.ssl.trustStore", "/path/to/yourTruststore.jks");
systemProps.put( "javax.net.ssl.trustStorePassword", "trustStorePassword");
System.setProperties(systemProps);
如果trustStore没有密码,那以下两种加载方式的参数”javax.net.ssl.trustStorePassword”都是不需要输入的。
=============================================================================================================
(https://technet.microsoft.com/zh-cn/library/bb879943)
Microsoft JDBC Driver for SQL Server 或客户端必须验证服务器是正确的服务器,并且其证书是由客户端信任的证书颁发机构颁发的。为了验证服务器证书,在连接时必须提供信任材料。此外,服务器证书的颁发者必须是客户端信任的证书颁发机构。
本主题首先介绍了如何在客户端计算机中提供信任材料。然后,本主题介绍当私钥证书颁发机构颁发 SQL Server 实例的安全套接字层 (SSL) 证书时,如何将服务器证书导入到客户端计算机的信任存储区。
如果未指定 trustStore 属性或该属性设置为 null,则 Microsoft JDBC Driver for SQL Server 将依赖于基础 JVM 的安全提供程序,即 Java 安全套接字扩展 (SunJSSE)。SunJSSE 提供程序提供一个默认的 TrustManager,用于验证由 SQL Server 针对在信任存储区中提供的信任材料返回的 X.509 证书。
TrustManager 尝试以下列搜索顺序找到默认的 trustStore:
-
如果定义了系统属性“javax.net.ssl.trustStore”,则 TrustManager 将试图使用由该系统属性指定的文件名来查找默认的 trustStore 文件。
-
如果未指定“javax.net.ssl.trustStore”系统属性并且文件“<java 主文件夹>/lib/security/jssecacerts”存在,则使用该文件。
-
如果文件“<java 主文件夹>/lib/security/cacerts”存在,则使用该文件。