当前位置: 首页 > news >正文

python3.11SSL: SSLV3_ALERT_HANDSHAKE_FAILURE

参考:python request包 版本不兼容 报错sslv3 alert handshake failure 解决方法-CSDN博客

修改:Python311\Lib\site-packages\urllib3\util\ssl_.py

新版本3.11里默认没有DEFAULT_CIPHERS

补回来:

#__imported from 3.6.8
# A secure default.
# Sources for more information on TLS ciphers:
#
# - https://wiki.mozilla.org/Security/Server_Side_TLS
# - https://www.ssllabs.com/projects/best-practices/index.html
# - https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
#
# The general intent is:
# - prefer cipher suites that offer perfect forward secrecy (DHE/ECDHE),
# - prefer ECDHE over DHE for better performance,
# - prefer any AES-GCM and ChaCha20 over any AES-CBC for better performance and
#   security,
# - prefer AES-GCM over ChaCha20 because hardware-accelerated AES is common,
# - disable NULL authentication, MD5 MACs, DSS, and other
#   insecure ciphers for security reasons.
# - NOTE: TLS 1.3 cipher suites are managed through a different interface
#   not exposed by CPython (yet!) and are enabled by default if they're available.
DEFAULT_CIPHERS = ":".join(
    [
        "ECDHE+AESGCM",
        "ECDHE+CHACHA20",
        "DHE+AESGCM",
        "DHE+CHACHA20",
        "ECDH+AESGCM",
        "DH+AESGCM",
        "ECDH+AES",
        "DH+AES",
        "RSA+AESGCM",
        "RSA+AES",
        "!aNULL",
        "!eNULL",
        "!MD5",
        "!DSS",
    ]
)

_TYPE_PEER_CERT_RET = typing.Union["_TYPE_PEER_CERT_RET_DICT", bytes, None]

第二处:create_urllib3_context函数里

    # Unless we're given ciphers defer to either system ciphers in
    # the case of OpenSSL 1.1.1+ or use our own secure default ciphers.
    if ciphers:
        context.set_ciphers(ciphers)
    else: #added by from 3.6.8
        context.set_ciphers(DEFAULT_CIPHERS)

修改这处之后,不再报握手错误,正常连接

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 搭建个人智能家居 7 - 空气颗粒物检测
  • 【.NET全栈】ASP.NET开发Web应用——站点导航技术
  • 操作系统发展简史(Unix/Linux 篇 + DOS/Windows 篇)+ Mac 与 Microsoft 之风云争霸
  • 【BUG】已解决:raise KeyError(key) from err KeyError: (‘name‘, ‘age‘)
  • 学习SQL权限管理的基础知识
  • 查询优化 -- UNION 用法
  • 路由数据获取及封装方法
  • 数据结构(Java):力扣牛客 二叉树面试OJ题(一)
  • FFmpeg学习(五)-- libswresample使用说明及函数介绍
  • C# 4.List
  • Linux——多路复用之select
  • 深度解析:在 React 中实现类似 Vue 的 KeepAlive 组件
  • Apache BookKeeper 一致性协议解析
  • CTF-Web习题:[HFCTF2021]Unsetme
  • uniapp踩坑之项目:uni-table垂直居中和水平居中
  • SegmentFault for Android 3.0 发布
  • 10个确保微服务与容器安全的最佳实践
  • 2017 年终总结 —— 在路上
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Android框架之Volley
  • Angular 响应式表单 基础例子
  • CSS 提示工具(Tooltip)
  • docker-consul
  • idea + plantuml 画流程图
  • Java 网络编程(2):UDP 的使用
  • Linux CTF 逆向入门
  • overflow: hidden IE7无效
  • Python连接Oracle
  • vue数据传递--我有特殊的实现技巧
  • windows下使用nginx调试简介
  • 分类模型——Logistics Regression
  • 如何胜任知名企业的商业数据分析师?
  • 入门到放弃node系列之Hello Word篇
  • 项目管理碎碎念系列之一:干系人管理
  • 写代码的正确姿势
  • raise 与 raise ... from 的区别
  • ​io --- 处理流的核心工具​
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • (LeetCode) T14. Longest Common Prefix
  • (poj1.2.1)1970(筛选法模拟)
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (四)图像的%2线性拉伸
  • (一)SvelteKit教程:hello world
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 使窗口永不获得焦点
  • .net程序集学习心得
  • .net分布式压力测试工具(Beetle.DT)
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .NET周刊【7月第4期 2024-07-28】