[英]How do I get NPN support for PyOpenSSL?
我有一个使用 PyOpenSSL 的应用程序。 这取决于 NPN 的使用。 这曾经可以工作,但是当我重新创建我的虚拟环境时,所构建的 openssl PyOpenSSL 版本不再支持 NPN:
Traceback (most recent call last):
File "/tmp/sbpv/http2/proxy1/test_proxy.py", line 60, in <module>
sys.exit(main())
File "/tmp/sbpv/http2/proxy1/test_proxy.py", line 46, in main
proxy_http2.configure_http2_server(args.listen_port, args.server_port, args.https_pem)
File "/home/bneradt/repos/proxy-verifier/test/autests/gold_tests/autest-site/proxy_http2.py", line 188, in configure_http2_server
context.set_npn_advertise_callback(npn_advertise_cb)
File "/home/bneradt/.local/share/virtualenvs/autests-kCEHOjhw/lib/python3.8/site-packages/OpenSSL/SSL.py", line 650, in explode
raise NotImplementedError(error)
NotImplementedError: NPN not available
PyOpenSSL 的当前版本是 19.1.0。 我已经退回到 PyOpenSSL 19.0.0 和 18.0.0,但它们似乎都是针对 openssl1.1.1h 构建的:
$ python -c "import OpenSSL; print(OpenSSL.version.__version__)"
18.0.0
$ python -c "import OpenSSL; print(OpenSSL.SSL.SSLeay_version(OpenSSL.SSL.SSLEAY_VERSION))"
b'OpenSSL 1.1.1h 22 Sep 2020'
$ python -c "import OpenSSL; print(OpenSSL._util.lib.Cryptography_HAS_NEXTPROTONEG)"
0
PyOpenSSL 的 openssl 版本是否会定期更新,以便我最近安装的这些版本具有不同的 openssl 版本? 或者我对它的工作原理感到困惑,而 PyOpenSSL 以某种方式使用了一些本地的 openssl 版本?
简而言之,我要问的问题是:如何获得支持 NPN 的 PyOpenSSL 版本?
PyOpenSSL 不随 openssl 的构建版本一起提供。 相反,它依赖于密码学Python 模块。 如果我将密码学版本固定为 2.8 ,则 PyOpenSSL 版本 19.1.0 使用具有 NPN 支持的 openssl 版本:
$ python -c "import OpenSSL; print(OpenSSL._util.lib.Cryptography_HAS_NEXTPROTONEG)"
1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.