python - 在 Python 中使用套接字通过 SSL 连接到 Postgres 数据库
问题描述
我正在尝试使用套接字连接到 Postgres 数据库,以从客户端强制执行特定的 TLS 版本,以验证数据库不接受来自使用旧版本 TLS(如 tlsv1.1)的客户端的连接。握手时连接失败,出现以下错误:
python test2.py
回溯(最近一次调用):文件“test2.py”,第 12 行,在 ssl_version=ssl.PROTOCOL_TLSv1_2)文件“<>/python3.6/lib/python3.6/ssl.py”,第 1232 行,在 get_server_certificate使用 context.wrap_socket(sock) 作为 sslsock:文件“<>/python3.6/lib/python3.6/ssl.py”,第 407 行,在 wrap_socket _context=self,_session=session) 文件“<>/python3. 6/lib/python3.6/ssl.py”,第 817 行,在init self.do_handshake() 文件“<>/python3.6/lib/python3.6/ssl.py”,第 1077 行,在 do_handshake self. _sslobj.do_handshake() 文件“<>/python3.6/lib/python3.6/ssl.py”,第 689 行,在 do_handshake self._sslobj.do_handshake() ssl.SSLEOFError: EOF 发生违反协议 (_ssl. c:852)
以下是代码片段:
import socket
import ssl
hostname = <DB_Endpoint>
context = ssl.create_default_context()
with socket.create_connection((hostname, 8200)) as sock:
with context.wrap_socket(sock, server_hostname=hostname) as ssock:
print(ssock.version())
解决方案
推荐阅读
- android - 有时一个信号将 UserId 返回为 null
- c# - 如何在 Windows 窗体的数据网格中隐藏空/空白行
- neo4j - Cypher - 结合 2 个查询评估哪个 where 子句为真
- python - 使用 pandas 进行动态数据选择
- php - 使用 xampp 服务器通过 php 连接到 mysql
- opencart - opencart 3 - 交货日期 - 产品页面上的 4 天后
- go - 如果我们无法从传递给该例程的通道中侦听,如何停止 goroutine
- sql - SQL给定多个阈值,获取低于每个阈值的最大值
- angular - 带有类对象的Angular 7行为主题
- android - Android 应用程序或服务是否可以位于需要权限的 Android API 和使用这些 API/权限的其他应用程序之间?