如何使用自签名证书通过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连接:
然后在服务器证书上,在右侧面板上,单击“创建自签名证书”和“授予友好名称”。 >好。现在证书准备就绪。
通过在cmd中输入mmc
添加MSSQL用户,添加授予读取权限。
现在打开SQL Server配置管理器
在证书标签中,选择最近添加的证书
重新启动SQL Server服务。
但是如何将它与java程序连接?在trustStore和trustStorePassword字段中应该保留什么?
工作环境:Windows 8和mssql server 2012
答案 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";