我们是一个拥有 SQL Server 2000 环境的数据中心,该环境为我们销售的产品提供数据库服务,该产品作为富客户端应用程序加载在我们的众多客户及其工作站上。
目前,该应用程序使用从客户端站点到我们的数据中心的直接 ODBC 连接。
我们需要开始加密凭证 - 因为今天所有内容都是明文,并且身份验证是弱加密的 - 并且我正在尝试确定在服务器上实现 SSL 的最佳方法,同时尽量减少对客户端的影响。
不过,有几件事:
1) 我们有自己的 Windows 域,并且所有服务器都已加入到我们的私有域中。我们的客户对我们的域一无所知。
2) 通常,我们的客户通过以下方式连接到我们的数据中心服务器:a) 使用 TCP/IP 地址 b) 使用我们通过互联网发布的 DNS 名称、从我们的 DNS 服务器到我们客户的区域传输,或者客户端可以添加静态 HOSTS 条目。
3) 据我了解,启用加密后,我可以进入网络实用程序,选择要加密的协议的“加密”选项。例如 TCP/IP。
4) 选择加密选项后,我可以选择安装第三方证书或自签名证书。我已经测试了自签名证书,但确实存在潜在问题。稍后我会解释一下。如果我使用第三方证书(例如 Verisign 或 Network solutions...),我应该请求哪种证书?这些不是 IIS 证书吗?当我通过 Microsoft 的证书服务器创建自签名证书时,我必须选择“身份验证证书”。这在第三方世界中意味着什么?
5) 如果我创建自签名证书,我理解“颁发给”名称必须与运行 SQL 的服务器的 FQDN 匹配。就我而言,我必须使用我的私有域名。如果我使用这个,当我的客户端尝试连接到我的 SQL Server 时,这会对我的客户端产生什么影响?他们肯定无法在他们的网络上解析我的私有 DNS 名称……
我还验证了安装自签名证书时,它必须位于运行 SQL Server 的用户帐户的本地个人存储中。仅当 FQDN 与证书的“颁发给”匹配并且 SQL 在安装了证书的帐户下运行时,SQL Server 才会启动。
如果我使用自签名证书,这是否意味着我必须让我的每个客户端都安装它以进行验证?
6) 如果我使用第三方证书(这听起来是最好的选择),那么我的所有客户端在访问我的私人服务器的私有 WAN 连接时是否都必须具有互联网访问权限才能验证证书?
我该如何处理 FQDN?听起来他们必须使用我的私人域名(未发布),而不能再使用我为他们设置的域名?
7) 我计划很快升级到 SQL 2000。使用 SQL 2005 设置 SSL 是否比使用 SQL 2000 更容易/更好?
任何帮助或指导都将不胜感激
答案1
老实说,最好的办法是停止直接进入数据库服务器。这是一个本质上很弱的解决方案(安全方面),因为任何人都可以尝试使用 sa 帐户登录您的 SQL Server。
更好的解决方案是在 Web 服务器上设置一个 Web 服务,让您的应用程序通过 HTTPS 向该 Web 服务发送请求,然后让 Web 服务将请求转发到数据库,同时数据库与公共互联网断开连接(或设置防火墙)。
这还为您提供了能够毫无问题地切换数据库的优势,因为 Web 服务器只需与数据库通信。您还可以对 Web 层进行负载平衡,这样随着业务的增长,您可以将连接负载分散到 Web 服务器中。