尝试使用启用了 TLS 的连接的 python 连接到 Sybase 和 Azure SQL 服务器

Posted

技术标签:

【中文标题】尝试使用启用了 TLS 的连接的 python 连接到 Sybase 和 Azure SQL 服务器【英文标题】:Trying to connect to Sybase and Azure SQL server using python with TLS enabled connections 【发布时间】:2019-06-03 14:57:16 【问题描述】:

我很想使用 python (pymssql) 从 AWS 连接到 Sybase 数据库和 Azure SQL 服务器,并在连接上启用 TLS。即使在尝试 (How to configure pymssql with SSL support on Ubuntu?) 之后,这似乎也不起作用。

详情:加密在freetds/pymssql中开启。 tsql -C,显示 OpenSSL 已启用。但是,当我检查 SQL 服务器端是否加密连接时,使用 SELECT *,encrypt_option FROM sys.dm_exec_connections,我看到 encrypt_option='False'

所以,我想看看 pyodbc 是否是需要选择的路线。试图查看 pyodbc 在启用 TLS 的情况下连接到 Sybase 的 odbc 驱动程序选项是什么?

【问题讨论】:

您与 Azure SQL 的连接必须加密。但是,当您连接到 Azure SQL 时,您可能没有直接连接到 SQL Server 实例。相反,您可能正在连接到代理。您的客户端与代理之间的连接已加密,但代理与 SQL Server 实例之间的连接可能未加密。这就是 sys.dm_exec_connections 中相应行的 encrypt_option 可能为“FALSE”的原因。 @GordThompson 有没有办法找到或指示 Azure SQL 连接已加密?谢谢! Azure SQL 连接始终是加密的,至少从客户端计算机的角度来看是这样。 【参考方案1】:

为了连接到 Azure SQL,我使用了 pyodbc 和 ODBC Driver 17 for SQL Server。

在 pyodbc 连接中,我提供了 - Encrypt=YES;trustServerCertificate=Yes' 以加密连接并在 SQL 服务器端验证连接已加密。

为了连接到 Sybase,我使用了带有 Encrypt=Yes 选项的 pyodbc 和 FreeTDS 驱动程序。

【讨论】:

以上是关于尝试使用启用了 TLS 的连接的 python 连接到 Sybase 和 Azure SQL 服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何在启用 tls 的情况下连接到 nomad/consul UI?

python paho mqtt客户端连接通过ssl/tls给出错误

在高级设置中启用 TLS 1.0、TLS 1.1 和 TLS 1.2,

在 Google Talk XMPP TCP 连接上使用 TLS 使用 PHP

如何在 Spring-boot 上启用 TLS 1.2?

如何使用相同的 TLS 会话通过数据连接连接到 FTPS 服务器?