Python [SqlAlchemy][mssql][tls1.2]如何使用windows中的pyodbc强制实施用于SqlAlchemy连接到MS SQL Server的TLS 1.2?

Python [SqlAlchemy][mssql][tls1.2]如何使用windows中的pyodbc强制实施用于SqlAlchemy连接到MS SQL Server的TLS 1.2?,python,sql-server,ssl,sqlalchemy,Python,Sql Server,Ssl,Sqlalchemy,最近的硬化标准使我们禁用了TLS 1.0和1.1 TLS 1.0和1.1的注册表设置: HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1

最近的硬化标准使我们禁用了TLS 1.0和1.1

TLS 1.0和1.1的注册表设置: HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client

现在输入以下代码:

from sqlalchemy import create_engine

db = create_engine(
    "mssql+pyodbc://__OUR_SERVER_NAME__/__OUR_DATABSE_NAME__?driver=SQL+Server+Native+Client+11.0&Trusted_Connection=yes&Encrypt=yes&TrustServerCertificate=Yes&ssl=True",
    connect_args={
        # 'sslmode': 'require',    # did not work
        # 'tls-version': 'tls1.2', # did not work
        # 'ssl': True,             # did not work
    },
    echo=True,
)

with db.begin() as conn:
    conn.execute("SELECT TOP 5 * FROM sys.tables")
将在
db.begin()
上引发此异常:

发生异常:操作错误 (pyodbc.OperationalError)('08001','[08001][Microsoft][SQL Server Native Client 11.0]加密在客户端上不受支持。(21)(SQLDriverConnect);[08001][Microsoft][SQL Server Native Client 11.0]SSL提供程序:客户端和服务器无法通信,因为它们没有通用算法。\r\n(-2146893007);[08001][Microsoft][SQL Server本机客户端11.0]客户端无法建立连接(21);[08001][Microsoft][SQL Server本机客户端11.0]无效的连接字符串属性(0);[08001][Microsoft][SQL Server本机客户端11.0]建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。请检查实例名称是否正确,以及SQL Server是否配置为允许远程连接。有关详细信息,请参阅SQL Server联机丛书。(-2146893007)”

TLS 1.2已启用,并且可以在同一客户端服务器上与Azure Data Studio配合使用

甚至python也表明openssl版本是合理的:

import ssl
print(f'SSL Version = {ssl.OPENSSL_VERSION}')
哪些产出:

SSL Version = OpenSSL 1.1.1d  10 Sep 2019
Python版本:

python --version
Python 3.7.6
我试过查看,但似乎找不到如何使用SqlAlchemy

任何帮助都将不胜感激



可能重复的问题(信息较少):

进一步调查显示ODBC驱动程序存在问题

该应用程序位于Windows Server 2012上,ODBC版本为:

SQL Server本机客户端11.0

版本:
2011.110.3000.00

日期:2012年10月20日

使用新的连接字符串将驱动程序更新为:

从sqlalchemy导入创建引擎
db=创建引擎(
“mssql+pyodbc://__OUR_SERVER_NAME__/__OUR_DATABSE_NAME__?driver=ODBC+驱动程序+17+for+SQL+Server&Trusted_连接=yes&Encrypt=yes&TrusteServerCertificate=yes&ssl=True“,
连接参数={
#“sslmode”:“require”,不起作用
#“tls版本”:“tls1.2”不起作用
#“ssl”:正确,#不起作用
},
回声=真,
)

进一步调查显示ODBC驱动程序存在问题

该应用程序位于Windows Server 2012上,ODBC版本为:

SQL Server本机客户端11.0

版本:
2011.110.3000.00

日期:2012年10月20日

使用新的连接字符串将驱动程序更新为:

从sqlalchemy导入创建引擎
db=创建引擎(
“mssql+pyodbc://__OUR_SERVER_NAME__/__OUR_DATABSE_NAME__?driver=ODBC+驱动程序+17+for+SQL+Server&Trusted_连接=yes&Encrypt=yes&TrusteServerCertificate=yes&ssl=True“,
连接参数={
#“sslmode”:“require”,不起作用
#“tls版本”:“tls1.2”不起作用
#“ssl”:正确,#不起作用
},
回声=真,
)