从Java程序到mssql的SSL连接

gpnt7bae  于 5个月前  发布在  Java
关注(0)|答案(2)|浏览(162)

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

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
  • 添加/删除管理单元
  • 选择证书
  • 添加
  • 接下来,选择本地计算机,完成,确定
  • 展开证书、个人、证书,我们可以看到最近添加的证书。
  • 选择证书,右键单击,所有任务,管理私钥
  • 添加MSSQL用户,添加给予读取权限。
  • 现在打开SQL Server配置管理器
  • SQL Server网络配置、属性
  • 将强制加密设置为是,
  • 在证书选项卡中,选择最近添加的证书
  • 重新启动SQL Server Services。
  • 尝试加密连接到数据库和连接。

但是如何将其与Java程序连接?在trustStore和trustStorePassword字段中应该保存什么?
工作环境:Windows 8和mssql server 2012

dced5bon

dced5bon1#

我相信你现在已经解决了这个问题!,但如果其他人有同样的问题,它在这里解决:https://msdn.microsoft.com/en-us/library/bb879949(v=sql.110).aspx
当encrypt属性设置为true且trustServerCertificate属性设置为true时,Microsoft JDBC Driver for SQL Server将不验证SQL Server SSL证书。这通常是允许在测试环境中进行连接所必需的,例如SQL Server示例只有自签名证书的情况。

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

字符串

hxzsmxv2

hxzsmxv22#

Official documentation中,它说使用这个:

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

字符串
但它没有为我工作,我不得不删除integratedSecurity=true为它的工作.最终的连接URL是:

spring.datasource.url=jdbc:sqlserver://888.000.999.666;database=mydatabase;encrypt=true;trustServerCertificate=true

相关问题