【问题标题】:Connection to SQL Server using SSL encryption使用 SSL 加密连接到 SQL Server
【发布时间】:2016-09-07 00:47:18
【问题描述】:

我们希望对所有到 SQL Server 的流量进行加密。所以我们有 SSL 证书并将其安装到我们的 SQL Server。

我们的 .NET web 应用程序可以使用encrypt=true 功能连接到 SQL Server,从而在 SQL Server 和 Web Server 之间加密流量。
我们还有一个 Delphi 2007 桌面应用程序,我们也希望在 SQL Server 和应用程序用户之间加密流量。

虽然应用程序用户可以通过选中"encrypt connection" 功能的 SQL Management Studio 连接到 SQL Server,但我们无法通过我们的 Delphi 应用程序连接。我们在 OLEDB 连接字符串中添加了"encrypt=true",但没有任何改变。

我们应该怎么做才能加密所有流量?

【问题讨论】:

  • 我们无法连接具体是什么意思?您收到错误消息吗?如果是这样,exact 错误消息是什么?您使用哪些组件进行连接?你的 ConnectionString 是什么?
  • connectionstrings.com/all-sql-server-connection-string-keywords(对于 ADO)还有:当 encrypt 属性设置为 true 并且 trustServerCertificate 属性设置为 true 时,驱动程序将不会验证 SSL 证书。这通常是在测试环境中允许连接所必需的,例如在实例只有自签名证书的情况下。字符串 connectionUrl = "jdbc:sqlserver://localhost:1433;" +“数据库名称=AdventureWorks;集成安全=真;” + "加密=真;trustServerCertificate=真 "
  • 我们使用的连接字符串:Provider=SQLOLEDB.1;Encrypt=True;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=OurDatabaseName;Data Source=OurServer\OurInstance;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Tag with column collation when possible=False我的意思是can not connect我们可以连接我们的sql server但不能建立加密连接。
  • 我们使用 TADOConnection 创建连接对象。
  • 我试过了,但是没有用。据我所知,Use Encryption for Data 功能是用于数据加密而不是连接加密。而且微软还告诉您只需 ...添加 Encrypt 关键字并将其在连接字符串中设置为 true... this kb.

标签: sql-server delphi ssl encryption delphi-2007


【解决方案1】:

SSL 连接加密可以从客户端(可以是 IIS 网站或桌面应用程序)启动,也可以在服务器端强制执行。无论哪种方式,都需要安装证书并可供用户或进程使用,以建立其他系统可以验证的连接。客户端加密使用“encrypt=true”或选择 SQL Server Management Studio 上的复选框选项进行配置。 SQL Server 的服务器端加密是通过将证书和私钥添加到运行数据库引擎的服务帐户的证书存储区并使用 SQL Server 配置管理器指定用于加密的证书并将强制加密属性设置为 true 来配置的。建议使用您的域证书颁发机构生成的证书或从公共 CA 购买的证书,因为自签名证书容易受到中间人攻击。

您的 Delphi 2007 应用程序的主要问题是服务器无法验证应用程序提供的证书并拒绝信任它,或者客户端上没有可用的证书可供使用。证书验证问题并不少见。当我为所有连接上的服务器端加密配置我的服务器时,我还必须将相同的域 CA 证书添加到任何管理自己的证书验证的虚拟机,如 java VM。有趣的是,当我阅读 trustServerCertificate=true 时,文档指出“当 encrypt 属性设置为 true 并且 trustServerCertificate 属性设置为 true 时,Microsoft JDBC Driver for SQL Server 将不会验证 SQL Server SSL 证书。”我没有使用此属性,但它可能会起作用,而不是将证书添加到 VM。此外,如果您有复制,如果一台服务器强制加密而另一台不强制加密,您将遇到挑战。

您还可以通过研究“遍历信任链”和证书的数字签名来了解有关如何验证证书的更多信息。这将帮助您了解发生这种情况的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    相关资源
    最近更新 更多