Python [SqlAlchemy][mssql][tls1.2]如何使用windows中的pyodbc强制实施用于SqlAlchemy连接到MS SQL Server的TLS 1.2?
最近的硬化标准使我们禁用了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 现在输入以下代码: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
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”:正确,#不起作用
},
回声=真,
)