从Java程序到mssql的SSL连接

时间:2013-12-26 11:56:54

标签: 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=?";

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

此外,我还可以通过以下方法与管理工作室的mssql连接:

  • 创建自签名证书:
  • 转到“控制面板”
  • 管理工具
  • IIS管理器
  • 服务器证书
  • 然后在服务器证书上,在右侧面板上,单击“创建自签名证书”和“授予友好名称”。 >好。现在证书准备就绪。

  • 通过在cmd中输入mmc

  • 打开MMC
  • 添加/删除Snap in
  • 选择证书
  • 添加
  • 接下来,选择本地计算机,完成,确定
  • 展开证书,个人,证书,我们可以看到最近添加的证书。
  • 选择证书,右键单击,所有任务,管理私钥
  • 添加MSSQL用户,添加授予读取权限。

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

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

  • 重新启动SQL Server服务。

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

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

工作环境:Windows 8和mssql server 2012

1 个答案:

答案 0 :(得分:3)

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

  

当encrypt属性设置为true且trustServerCertificate属性设置为true时,SQL Server的Microsoft JDBC驱动程序将不验证SQL Server SSL证书。这通常是允许在测试环境中进行连接所必需的,例如SQL Server实例只有自签名证书的地方。

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