Databricks CLI:SSLError,找不到本地颁发者证书



我已经安装并配置了Databricks CLI,但当我尝试使用它时,我收到一个错误,表明它找不到本地颁发者证书:

$ dbfs ls dbfs:/databricks/cluster_init/
Error: SSLError: HTTPSConnectionPool(host='dbc-12345678-1234.cloud.databricks.com', port=443): Max retries exceeded with url: /api/2.0/dbfs/list?path=dbfs%3A%2Fda
tabricks%2Fcluster_init%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer
certificate (_ssl.c:1123)')))

上面的错误是否表明我需要安装证书,或者以某种方式配置我的环境,以便它知道如何找到正确的证书?

我的环境是带有WSL的Windows 10(Ubuntu 20.04((上面的命令来自WSL/Ubuntu命令行(。

Databricks CLI安装在Anaconda环境中,包括以下证书和SSL包:

$ conda list | grep cert
ca-certificates           2020.6.20            hecda079_0    conda-forge
certifi                   2020.6.20        py38h32f6830_0    conda-forge
$ conda list | grep ssl
openssl                   1.1.1g               h516909a_1    conda-forge
pyopenssl                 19.1.0                     py_1    conda-forge

当我尝试使用带有curl:的REST API时,我也遇到了类似的错误

$ curl -n -X GET https://dbc-12345678-1234.cloud.databricks.com/api/2.0/clusters/list
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

此问题可以通过禁用SSL证书验证来解决。在Databricks CLI中,您可以通过在Databricks配置文件.databrickscfg中指定insecure = True来执行此操作。

我通过设置环境变量REQUESTS_CA_BUNDLE建立了对Databricks实例的信任。

➜ databricks workspace list
Error: SSLError: HTTPSConnectionPool(host='HOSTNAME.azuredatabricks.net', port=443): Max retries exceeded with url: /api/2.0/workspace/list?path=%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)')))
➜ export REQUESTS_CA_BUNDLE=path/to/ca-bundle
➜ databricks workspace list
Users
Shared
Repos

来自GitHub问题:

下载用于签署Databricks证书的根CA证书。确定CA束的路径,并设置环境变量REQUESTS_CA_BUNDLE。有关更多信息,请参阅SSL证书验证。

针对Azure CLI的GitHub中也存在类似问题。解决方案实际上是一样的。结合埃里克的回答:

  1. 使用浏览器下载证书并将其保存到磁盘

    • 打开你的Chrome浏览器并访问Databricks网站
    • 按CTRL+SHIFT+I打开开发工具
    • 单击安全选项卡
    • 单击"查看证书"按钮
    • 单击详细信息选项卡
    • 在"证书层次结构"(顶部面板(上,单击树中的最高节点
    • 单击"导出所选证书">
    • 选择要保存的位置(例如/home/cert/ccert.crt(
  2. 在Windows上使用SET命令,在Linux上使用export创建一个名为REQUESTS_CA_BUNDLE的env变量,并将其指向步骤1中下载的文件。(请记住,这需要在不在集群中尝试使用dbfs的同一台机器中完成(例如:

    Linux

    export REQUESTS_CA_BUNDLE=/home/cert/certificate.crt
    

    Windows

    set REQUESTS_CA_BUNDLE=c:tempcertcertificate.crt
    
  3. 尝试再次运行命令dbfs ls dbfs:/databricks/cluster_init/

    $ dbfs ls dbfs:/databricks/cluster_init/
    

应该可以!

相关内容

  • 没有找到相关文章

最新更新