ssl - Pickle 一个 python 请求会话以在不同的应用程序运行中实现“TLS 会话恢复”
问题描述
我正在尝试为我的命令行应用程序实现 TLS 会话恢复。
这个问题#2522解释了如何腌制一个requests.session
.
但是,当我重新运行我的应用程序(加载腌制会话)时,会重复 TLS 握手。
我想知道我错过了什么?这甚至可能吗?
我想要的行为是:
# first execution, TLS handshake is performed
$ time my_python_app.py
0.2s
# second execution, TLS handshake is reused
$ time my_python_app.py
0.02s
解决方案
ssl
使用 Python 的 ssl 库(即或)提供的 API 可能无法做到这一点pyopenssl
。在 OpenSSL 中,TLS 会话是一个内存结构,它具有指向其他结构等的指针——并且这个结构需要以某种方式进行序列化以便在以后的不同进程中进行存储和反序列化。有函数 i2d_SSL_SESSION 和 d2i_SSL_SESSION 可以做到这一点,但是这些以及将会话重新创建到上下文中所需的所有其他函数都不会暴露给 Python。
如果可能,请改用 TLS 1.3。即使没有会话重用,它也已经缩短了 TLS 握手。
推荐阅读
- python - Libeosa 在尝试读取音频文件时随机崩溃,尽管它在其他时候可以正常读取相同的文件
- angular - 收到父数据之前的角度子渲染
- arangodb - 在 arangosearch 视图中对同一查询中的不同字段使用不同的分析器
- wordpress - 在 Wordpress 插件上使用 REST API 进行用户注册
- python - 如何替换 Dataframe 列中的子字符串,但仅在字符串的开头?
- git - 恢复 Git 中已暂存但未提交的丢失文件
- asynchronous - 如何在干净的架构中设计一个存储库写入 pub/sub 并从数据库中读取
- python - 在 OSMNX ox.plot_graph_routes() 中更改图形大小
- r - 如何更改 R 中 reReg 包中 plotEvents 中线条的颜色?
- react-native-ios - 错误:预期节点是 ["Statement"] 类型,但得到了 "AssignmentExpression" | 反应原生 IOS