我想使用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 - 证书链由权威机构颁发 那是不可信的。)
我可以批准这张自签名证书吗?
答案 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根 已安装和配置证书。在你的情况下 使用自签名证书,您需要将证书安装到 受信任的根证书颁发机构存储。