【问题标题】:Encrypt excel-vba ADODB connection加密 excel-vba ADODB 连接
【发布时间】:2016-08-29 07:38:40
【问题描述】:

我正在创建一些 Excel 报告,并且我正在尝试加密我的 SQL 连接。在服务器端,我已经正确设置了所有内容,并且通过 Microsoft 管理工作室,我能够建立安全连接。但是我找不到任何excel的解决方案。我想我需要Encrypt = yes 之类的东西,还是这个 ADODB.Connection 不支持 SSL?

Private Function GetDataFromADO(ByVal Sel As String) As ADODB.Recordset

'Declare variables'
    Dim objMyConn As ADODB.Connection
    Dim objMyCmd As ADODB.Command
    Dim objMyRecordset As ADODB.Recordset

    Set objMyConn = New ADODB.Connection
    Set objMyCmd = New ADODB.Command
    Set objMyRecordset = New ADODB.Recordset

'Open Connection'
    objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=" & sqlServer & ";Database=" & _
        sqlDB & ";User ID=" & sqlUsername & ";Password=" & sqlPassword & ";"
    Dim s As String
    s = objMyConn.ConnectionString
    objMyConn.Open


'Set and Excecute SQL Command'
    Set objMyCmd.ActiveConnection = objMyConn
    objMyCmd.CommandText = Sel
    objMyCmd.CommandType = adCmdText

'Open Recordset'
    Set objMyRecordset.Source = objMyCmd
    objMyRecordset.Open


Set GetDataFromADO = objMyRecordset

提前致谢

【问题讨论】:

  • 据我所知,与 SQL Server 的连接不是由 Excel 而是由 Windows 处理的(在安全、网络、加密、身份验证等方面)。您甚至无法在 Excel / ADO 中设置连接超时。好吧,你当然可以使用ADODB.Connection.ConnectionTimeout = 5000。但是您最好跳过该行,因为它不会产生任何影响。因此,如果我没有完全弄错,那么您应该关注您的 SQL 设置并确保它只允许加密连接:msdn.microsoft.com/en-us/library/ms191192.aspx 那么您应该可以使用Trusted_Connection=yes

标签: excel vba ssl encryption


【解决方案1】:

我的 SQL Server 上的强制加密选项起到了作用。

谢谢拉尔夫 :)

【讨论】:

    【解决方案2】:

    如果您想使用 SSL 或 TLS 保护与 SQL Server 的每个连接,则应将服务器上的一组协议的强制加密选项设置为是,并安装由域 CA 或公共证书生成的证书加利福尼亚州。将 Force Encryption 设置为 yes 会使用从 SQL Server 生成的自签名证书对所有连接进行加密。这使得中间人攻击的可能性敞开。 CA 或证书颁发机构是用于证明用户、计算机和组织的身份以及生成、管理和更新证书的服务或应用程序。

    假设您使用的是域 CA 生成的证书。只要您的 SQL Server、域 CA 系统和客户端系统可以相互通信,应该发生的是客户端启动与 SQL Server 的会话,然后 SQL Server 响应安全会话请求并提供从生成的证书域 CA 服务器到客户端进行验证。那么客户端应该通过两种方式来验证证书,通过域CA系统验证它是一个有效的证书,并通过使用数字签名来验证它没有被修改。

    在 SQL Server 上启用 SSL 的基础是将证书和私钥导入运行数据库引擎的服务帐户的证书存储区,然后使用 SQL 在服务器协议的属性中将 Force Encryption 属性设置为 yes服务器配置管理器并在证书选项卡上选择从域 CA 或公共 CA 生成的证书。

    【讨论】:

    • 我的服务器上还有一个网站也在运行。我已经使用 Let's Encrypt 为我的网站申请了一个证书,并将这个证书导入到证书存储中。所以我也在为我的 SQL Server 使用 Lets Encrypt 证书。看起来它正在工作。我没有使用 Trusted_Connection=yes 选项。唯一的缺点:Let Encrypt 证书有效期为 6 个月,只有网站证书存储中的原始证书会自动更新
    • 听起来不错。绝对要在 SQL Server 证书过期之前主动更换它。我在 QA 中遇到过这种情况,这很关键。
    猜你喜欢
    • 1970-01-01
    • 2021-05-09
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多