SSL请求trustStore的两种注册方式 (java/SQL Server)

52 篇文章 0 订阅
39 篇文章 0 订阅

(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”存在,则使用该文件。


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 JDBC 连接 SQL Server 时,可以使用 SSL 进行加密通信。默认情况下,JDBC 不会使用 SSL 连接 SQL Server,需要进行一些配置。 以下是使用 SSL 连接 SQL Server 的步骤: 1. 在 SQL Server 上启用 SSL:在 SQL Server 配置管理器中,找到 SQL Server Network Configuration -> Protocols for MSSQLSERVER -> 右键点击 Properties -> Certificate,选择自己的证书(或者创建一个新证书),将 ForceEncryption 属性设置为 Yes。 2. 获取 SQL Server 证书:从 SQL Server 所在的计算机导出证书(包括私钥),将其保存到本地。可以使用 Microsoft Management Console(MMC)中的证书管理器来完成此操作。 3. 将证书导入到客户端的 TrustStore 中:打开 cmd,切换到 JDK 的 bin 目录,执行以下命令: ```keytool -import -file <path_to_certificate> -alias <certificate_alias> -keystore <path_to_truststore>``` 其中,<path_to_certificate> 是证书文件的路径,<certificate_alias> 是证书别名,<path_to_truststore> 是客户端的 TrustStore 的路径。 4. 在 JDBC URL 中启用 SSL:在 JDBC URL 中添加以下参数: ```encrypt=true;trustStore=<path_to_truststore>;trustStorePassword=<truststore_password>``` 其中,<path_to_truststore> 是客户端的 TrustStore 的路径,<truststore_password> 是 TrustStore 的密码。 完整的 JDBC URL 可能类似于: ```jdbc:sqlserver://<server>:<port>;databaseName=<database>;encrypt=true;trustStore=<path_to_truststore>;trustStorePassword=<truststore_password>``` 注意,TrustStore 中的证书必须是可信的,否则 SSL 连接将失败。另外,为了保证安全性,TrustStore 中应该只包含必要的证书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值