【发布时间】:2017-07-24 13:55:54
【问题描述】:
我正在尝试使用 SSL 证书和 python 模块 PyMySQL 连接到 Google Cloud MYSQL 服务器,其中包含以下行:
connection = pymysql.connect(host=os.environ['SQL_HOST_IP'], user=os.environ['SQL_USER'], password = os.environ['SQL_PASSWORD'],
db='main', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor,
ssl={'key': 'client-key.pem', 'cert': 'client-cert.pem', 'ca': 'server-ca.pem'})
很遗憾,我不断收到以下错误:
ssl.CertificateError: hostname 'SQL_IP_ADDRESS' doesn't match '$ALIAS_FROM_SELF_SIGNED_SSL_CERT'
我已查找该问题,但找不到不涉及对 ssl 代码进行猴子补丁以跳过 ssl 验证的修复程序。我明确列出了 SQL 主机的 IP 地址,但 ssl 验证在 ssl.match_hostname 期间暂停,因为 ssl 证书是使用不同的主机名自签名的。
我确定我的密钥是有效的,因为我可以使用 Ruby (Windows/Linux) 和 linux mysql CLI 与它们连接。这似乎是 ssl.match_hostname 的问题。它类似于this question 和this one,但都回避了这个问题。
有没有办法在 Python 中正确处理自签名 SSL 证书。
【问题讨论】:
-
我也遇到了同样的问题,你解决了吗?
-
@proximate_cause 如果您能够解决此问题,建议您发布您的答案作为更好地帮助社区的解决方案。如果不是,则此问题通常是由于位于防火墙或代理后面引起的。建议调查任何本地网络配置并测试来自不受任何限制的不同网络的连接。
标签: python mysql ssl google-cloud-sql pymysql