【问题标题】:SSL certificate for curl disappears after Mountain Lion upgrade山狮升级后 curl 的 SSL 证书消失
【发布时间】:2012-08-01 19:10:35
【问题描述】:

我最近升级到 OS X Mountain Lion,当我运行 curl-config --ca 时,我得到一个空行。关于 curl 的详细信息:

curl 7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp     smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz 

问题是我无法运行brew update,除非我更新证书,因为我收到以下错误:

Initialized empty Git repository in /usr/local/.git/
error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://github.com/mxcl/homebrew.git/info/refs
fatal: HTTP request failed
Error: Failure while executing: git fetch origin 

自制软件帮助论坛说我需要更新证书。但是,除非我能找到 curl 存储证书的位置,否则我无法更新它。

编辑: HeatfanJohn 提出的解决方案如下:

我刚刚注意到有一个用于 curl-ca-bundle 的 Macport。很抱歉这个可能很简单的问题,但是您是安装 curl 还是预装了它?您可能需要考虑安装 MacPorts,然后使用 MacPorts 安装 curl-ca-bundle,尽管快速查看 Portfile,此 MacPort 似乎只是将包放入 /usr/share,您也可以手动执行。

从 MacPorts 安装的命令是 port install curl。从 MacPorts 安装可解决此问题。

【问题讨论】:

    标签: homebrew osx-mountain-lion


    【解决方案1】:

    我主要在 Winodws 上运行 curl,但从 curl 文档中可以看到以下内容:

    如果你使用 curl 命令行工具,你可以指定你自己的 通过将环境变量 CURL_CA_BUNDLE 设置为 CA 证书路径 您选择的路径。

    然后从http://curl.haxx.se/ca/cacert.pem 下载最新的.pem 文件,将.pem 放在您在CURL_CA_BUNDLE 环境变量中指定的目录路径中。文档对于环境变量是指向文件还是目录有点含糊。我会尝试将其指向文件。

    在 Windows 上,curlcurl 可执行文件所在的同一目录中查找 .pem 文件作为文件 curl-ca-bundle.crt。这也可能奏效。我家里有一台旧的 MAC。我将在今晚晚些时候进行测试。

    curl-config --ca 为我返回 /usr/share/curl/curl-ca-bundle.crt

    我刚刚注意到curl-ca-bundle 有一个 Macport。很抱歉这个可能很简单的问题,但是您是安装 curl 还是预装了它?您可能需要考虑安装 MacPorts,然后使用 MacPorts 安装 curl-ca-bundle,尽管快速查看 Portfile 这个 MacPort 似乎只是将捆绑包放入 /usr/share 中,您也可以手动执行。

    我从 Macports 安装了curl,现在我安装了 7.27.0 版本,它被配置为使用最新的 curl-ca-bundle.crt 文件。见下文:

    sams-mac:~ sam$ curl --version
    curl 7.27.0 (powerpc-apple-darwin8.11.0) libcurl/7.27.0 OpenSSL/1.0.1c zlib/1.2.7 libidn/1.25
    Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smtp smtps telnet tftp 
    Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
    
    sams-mac:~ sam$ curl-config --ca
    /opt/local/share/curl/curl-ca-bundle.crt
    
    sams-mac:~ sam$ ls -l /opt/local/bin/curl*
    -rwxr-xr-x   1 root  admin  147012 Aug  3 11:00 /opt/local/bin/curl
    -rwxr-xr-x   1 root  admin    4988 Aug  3 11:00 /opt/local/bin/curl-config
    sams-mac:~ sam$ 
    

    【讨论】:

    • 我试过了,导出了 CURL_CA_BUNDLE 路径,重新启动了我的机器,当我运行 curl-config --ca 时仍然得到一个空行。还有其他想法吗?
    • 运行curl --verbose -o null https://github.com/mxcl/homebrew.git/info/refs会得到什么
    • curl-config --ca 为我返回 /usr/share/curl/curl-ca-bundle.crt
    • 我刚刚注意到有一个用于 curl-ca-bundle 的 Macport。很抱歉这个可能很简单的问题,但是您是安装 curl 还是预装了它?您可能需要考虑安装 MacPorts,然后使用 MacPorts 安装 curl-ca-bundle,尽管快速查看 Portfile,此 MacPort 似乎只是将包放入 /usr/share,您也可以手动执行。
    • 你可以尝试从 Macports 安装 curl 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2012-12-17
    • 1970-01-01
    • 2012-07-26
    • 2015-06-05
    • 2014-10-14
    • 2016-08-06
    相关资源
    最近更新 更多