SSL连接到SQL Server时出现问题

时间:2011-08-11 10:26:53

标签: sql-server ssl

我想使用SSL连接到我的本地SQL Server 2008数据库。

我没有在服务器上安装任何证书,因为根据此http://msdn.microsoft.com/en-us/library/ms189067.aspx

  

如果未安装可信证书,SQL Server将生成   实例启动时的自签名证书,并使用   用于加密凭证的自签名证书。

这是简单的代码

SqlConnection connection = 
    new SqlConnection(@"Data Source=somePC\SqlExpress;Initial Catalog=test;integrated security = sspi;Persist Security Info=True;Encrypt=true;");

SqlCommand command = new SqlCommand("Select count(*) from Employee", connection);
connection.Open();
int employeeCount = (int)command.ExecuteScalar();
connection.Close();`

请注意encrypt=true;

但在connection.Open()上会出现一条带有消息

的异常
  

已成功与服务器建立连接,但随后   登录前握手期间发生错误。 (提供者:SSL   提供者,错误:0 - 证书链由权威机构颁发   那是不可信的。)

我可以批准这张自签名证书吗?

2 个答案:

答案 0 :(得分:7)

您需要告诉您的客户信任所提供的证书。自签名证书将不受信任,因为它未由您的计算机信任的任何CA签名。通过添加TrustServerCertificate = True来更改您的连接,如下所示:

SqlConnection connection = 
    new SqlConnection(@"Data Source=somePC\SqlExpress;Initial Catalog=test;integrated security = sspi;Persist Security Info=True;Encrypt=true; TrustServerCertificate=True");

SqlCommand command = new SqlCommand("Select count(*) from Employee", connection);
connection.Open();
int employeeCount = (int)command.ExecuteScalar();
connection.Close();

答案 1 :(得分:2)

  

要使RPC over Http工作,您必须拥有可信CA根   已安装和配置证书。在你的情况下   使用自签名证书,您需要将证书安装到   受信任的根证书颁发机构存储。

Install the cert into your trusted root store.