如何在无需验证服务端证书的情况下使用twisted SSL4ClientEndpoint
Twisted SSL4ClientEndpoint 跳过服务端证书验证实现方案
可跳过证书验证的SSL4ClientEndpoint使用方法
核心逻辑是自定义SSL上下文,关闭证书校验和主机名校验规则,示例代码如下:
from twisted.internet import reactor, ssl from twisted.internet.endpoints import SSL4ClientEndpoint # 构造不执行证书验证的上下文工厂 no_verify_context = ssl.CertificateOptions( verify=False, enableSni=True # 访问需要SNI的站点时需开启 ) # 实例化终端 endpoint = SSL4ClientEndpoint( reactor, "目标域名/IP", 443, no_verify_context )
不使用optionsForClientTLS的实现方案
你可以直接用Python标准库ssl模块构造上下文,完全绕过twisted的optionsForClientTLS相关接口,实现逻辑如下:
import ssl from twisted.internet import reactor from twisted.internet.endpoints import SSL4ClientEndpoint # 用标准库构造无验证SSL上下文 ssl_ctx = ssl.create_default_context() ssl_ctx.check_hostname = False ssl_ctx.verify_mode = ssl.CERT_NONE # 直接将上下文实例传入SSL4ClientEndpoint即可 endpoint = SSL4ClientEndpoint( reactor, "目标域名/IP", 443, ssl_ctx )
注意:禁用服务端证书验证会大幅降低通信安全性,存在中间人攻击风险,仅可在测试环境、内网可信场景下使用
内容的提问来源于stack exchange,提问作者Daniel David
相关产品推荐
相关产品推荐

