java - 从 Java 程序到 mssql 的 SSL 连接

标签 java sql-server ssl ssl-certificate

如何使用自签名证书通过 java 程序实现与 mssql 服务器的 SSL 连接以进行测试?目前我已经尝试使用连接字符串进行连接,如下所示:

String dbUrl = "jdbc:sqlserver://" + server + ":" + port
        + ";databaseName=" + database + ";user="+   username
                    + ";password=" + password
                    + ";encrypt="+true
                    + ";integratedSecurity="+true
                    + ";trustServerCertificate="+false
                    + ";hostNameInCertificate=?"
                    + ";trustStore=?;trustStorePassword=?";

我现在很困惑什么应该放在“?”在上面的连接字符串中的位置。

我还可以通过以下方法从 Management Studio 连接到 mssql:

  • 创建自签名证书:
  • 转到控制面板
  • 管理工具
  • IIS 管理器
  • 服务器证书
  • 然后在服务器证书的右侧面板上,单击创建自签名证书并提供友好名称。 > 好的。现在证书准备好了。

  • 打开 MMC,在 cmd 中输入 mmc

  • 添加/删除管理单元
  • 选择证书
  • 添加
  • 下一步,选择本地计算机,完成,确定
  • 展开Certificates,Personal,Certificates,我们可以看到最近添加的证书。
  • 选择证书,右击,所有任务,管理私钥
  • 添加MSSQL用户,添加读取权限。

  • 现在打开 SQL Server 配置管理器

  • SQL 服务器网络配置、属性
  • 将强制加密设置为是,
  • 在证书选项卡中,选择最近添加的证书

  • 重新启动 SQL Server 服务。

  • 尝试加密连接到数据库并连接。

但是如何将它与java程序连接起来呢? trustStore 和 trustStorePassword 字段应该保留什么?

工作环境:Windows 8、mssql server 2012

最佳答案

我相信您现在已经解决了这个问题!但如果其他人遇到同样的问题,请在此处解决: https://msdn.microsoft.com/en-us/library/bb879949(v=sql.110).aspx

When the encrypt property is set to true and the trustServerCertificate property is set to true, the Microsoft JDBC Driver for SQL Server will not validate the SQL Server SSL certificate. This is usually required for allowing connections in test environments, such as where the SQL Server instance has only a self signed certificate.

String connectionUrl = 
"jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;" +
"encrypt=true;trustServerCertificate=true";

关于java - 从 Java 程序到 mssql 的 SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20784407/

相关文章:

javax.crypto.BadPaddingException : Decryption error when i try to dectrypt RSA string with private key

sql - 为什么我的小数值在 SQL 插入中会四舍五入为整数?

c++ - Visual C++ 应用程序中的 SQL Server 数据库

java - 发布到合流时 Jenkins SSLHandshakeException

wordpress - 使用 Traefik 将 SSL 转换为 Wordpress

ssl - HAProxy 1.5-dev19 无法加载 SSL 证书

java - 将 logging.properties 文件更改为 Slf4j 中的不同路径

java - 可靠地跟踪 Hibernate 所做的更改

Java ME : How to wipe all information from a device

sql-server - 如何从 VB.NET 表单设置日期格式