我们有一个在 aws centos ECS 实例上运行的 python flask 应用程序。我们正在尝试通过 PYODBC 与 Linux 上的 odbc 17 建立与我们的数据库的加密连接。在本地运行时,我们只使用 SQL 服务器驱动程序。目前我们有代码:
params = urllib.parse.quote_plus(driver;server;user;pwd;...;Encrypt=yes)
SQLALCHEMY_DATABASE_URI="mssql+PYODBC:///?odbc_connect=%s" %params
我们在服务器上启用了 tls。该连接在Windows本地工作,但不部署在Linux中。 当前使用"是"而不是"真"进行部署。我们也将尝试使用"trustedserverconnection=yes"。 任何关于这个过程的见解将不胜感激!
更新:最新错误,无效的连接字符串属性"信任服务器证书">
我们最终实现了第二个连接参数:
TrustServerCertificate=YES
显然,这并不理想,因为我们希望有良好的安全实施实践。在将来的状态下,我们需要将其设置为 false,并将我们的 ssl pem 文件放在 Linux ssl 存储中。
希望这对某人有所帮助。在使用MS SQL Server查找pyodbc文档时遇到一些问题。
根据此文档,pyodbc 将连接字符串传递到基础 ODBC 驱动程序。Microsoft的 文章将连接字符串关键字与 SQL Server 本机客户端配合使用 记录Encrypt
和TrustServerCertificate
属性。在生产数据库中通常应避免使用TrustServerCertificate
设置;但是,在测试与使用自签名证书的开发数据库的加密连接时,它非常有用。例如,SQL Server 的默认安装使用自签名证书,并且需要此设置。
在我的mssql+pyodbc
连接字符串中,我只是根据需要附加?Encrypt=yes&TrustServerCertificate=yes
。请注意,如果您在问号后已有其他设置?
请使用&
而不是?
,例如:?Trusted_Connection=yes&Encrypt=yes&TrustServerCertificate=yes