簡體   English   中英

如何獲得 PyOpenSSL 的 NPN 支持?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM