【问题标题】:Is there any alternative of self-signed SSL Certificate?是否有自签名 SSL 证书的替代方案?
【发布时间】:2020-07-23 15:18:26
【问题描述】:

我想使用 the qnm Python package 解决准正常模式 (QNM)。我正在关注 Leo Stein 的论文(2019 年 8 月),他在 Colab 笔记本中使用了 qnm 包。如果我在 Jupyter Notebook 中使用 SageMath 进行相同的计算,则在获取 URL 时会出现以下错误。我不明白实际问题是什么。由于 SageMath 是基于 Python 的,并且 Colab notebook 也是 Jupyter 环境,因此此时出现的错误是意料之外的。

我的 Ubuntu 20.04 服务器上安装了 OpenSSL 1.1.1(2018 年 9 月 11 日)。我也多次尝试获得自签名证书,但都失败了。我现在累了,我需要一些帮助来消除错误而不签署 SSL 证书(如果有替代方案)。我需要知道问题出在 Sage 还是 Jupyter,因为可以使用 Python 在 Colab 笔记本中轻松获取 URL。

 ?qnm.download_data()
 qnm.download_data()

输出:

Trying to fetch` https://duetosymmetry.com/files/qnm/data-0.4.0.tar.bz2
data-0.4.0.tar.bz2: 0.00B [00:00, ?B/s]

SSLCertVerificationError                  Traceback (most recent call last)
/`home/kamasha/sage/sageinstall/sage-9.1/local/lib/python3.7/urllib/request.py in do_open(self, http_class, req, **http_conn_args)`

     1316                 h.request(req.get_method(), req.selector, req.data, headers,
    -> 1317                           encode_chunked=req.has_header('Transfer-encoding'))
      1318             except OSError as err: # timeout error

   SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)

    URLError                                  Traceback (most recent call last)
    <ipython-input-4-87f2c0b1b969> in <module>()
    
    ----> 1 qnm.download_data()
    
URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate `(_ssl.c:1056)>`

我希望这是足够的信息,我已尽力说清楚。

【问题讨论】:

    标签: jupyter-notebook openssl python-3.7 google-colaboratory sage


    【解决方案1】:

    当 Sage 使用的 Python 没有 SSL 功能时,可能会出现 SSL 错误。

    要检查是否是这种情况,请在 Sage 中运行以下命令:

    sage: import _ssl
    

    如果出现错误,请在终端中运行以下命令:

    $ sage -i openssl
    $ sage -f python3
    

    或者如果sage 不在您的路径中,请尝试以下操作:

    $ cd ~/sage/sageinstall/sage-9.1/
    $ ./sage -i openssl
    $ ./sage -f python3
    

    下次从源代码构建 Sage 时,您可能需要 在系统范围内安装大量依赖项 这样 Sage 就不必构建它们了。

    也可以install Sage via Conda

    【讨论】:

      【解决方案2】:

      我是 qnm 包的作者 Leo。 Samuel Lelièvre 向我询问了这个问题。将来我会建议将错误报告给 github 问题跟踪器https://github.com/duetosymmetry/qnm/issues

      关于 SSL 问题:Samuel Lelièvre 说对了,我在 sage 中使用 qnm.download_data() 没有问题。

      但是,我没有使用 sage 的经验,并且我在编写软件包时没有考虑到 sage 的兼容性。该代码在那里不起作用——因为 sage 中的数字类型不是机器整数/双精度/复杂类型。相反,它们是携带更多信息的对象,例如sage.rings.integer.Integer类型、sage.rings.real_mpfr.RealLiteral类型、sage.rings.complex_number.ComplexNumber等。numba遇到这些类型时会感到困惑并放弃。

      既然你已经安装了sage,你可以直接使用它自带的python3,不需要sage的所有额外功能。我建议在尝试使用 qnm 时使用 vanilla python,除非你知道如何让 sage 使用原始机器数字类型,或者你知道如何让 numba 来理解 sage 类型。

      就像我说的,我对圣人一无所知,所以我现在不打算尝试支持它。如果其他人知道如何支持它并向我发送拉取请求,我很乐意看看!

      最好的 狮子座

      【讨论】:

        猜你喜欢
        • 2017-12-19
        • 2010-09-09
        • 2011-11-07
        • 2012-11-01
        • 2015-06-18
        • 1970-01-01
        • 2019-11-07
        • 1970-01-01
        • 2011-02-14
        相关资源
        最近更新 更多