SSL证书 - OS X Mavericks

时间:2013-12-08 18:16:33

标签: macos curl ssl ssl-certificate

我正在尝试连接到使用SSL的localhost上的应用程序。我正在使用Mac OS X Mavericks。我得到的错误如下:

Error sending cURL get request to https://dev.site.com:5555/version  
Error code: 60 Error msg: SSL certificate problem: Invalid certificate chain

我尝试将证书添加到链中:

/usr/bin/security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" /etc/path/ca_key.pem 

仍然得到同样的错误。

4 个答案:

答案 0 :(得分:25)

在某些情况下,使用标准卷曲会更好(例如,如果您使用Mac代码开发Linux或* BSD)。在这种情况下,您可以这样做:

  1. 安装Homebrew

  2. 使用标准证书支持安装curl(不再有Keychain证书)。

    brew install curl --with-openssl && brew link curl --force

  3. 将根CA证书从http://curl.haxx.se/ca/cacert.pem安装到 /usr/local/etc/openssl/certs/cacert.pem

  4. 添加到〜/ .bash_profile

    export CURL_CA_BUNDLE=/usr/local/etc/openssl/certs/cacert.pem

  5. 经过4个步骤后,您可以将curl与来自文件的证书一起使用,而不是使用Keychain。

答案 1 :(得分:5)

OSX Mavericks中

--cacert--cert已被破坏。

您可以在此处详细了解:https://groups.google.com/forum/#!topic/munki-dev/oX2xUnoQEi4

解决方法如下:http://curl.haxx.se/mail/archive-2013-10/0036.html表示您需要将证书作为受信任的系统证书导入:

  

使用Keychain Access将证书导入系统(“系统”)或用户(“登录”)钥匙串,并将其标记为始终信任SSL和X.509基本策略。

答案 2 :(得分:4)

您可以做两件事:

(1)将.pem证书转换为.p12:

openssl pkcs12 -export -out my_certificate.p12 -inkey my_certificate.pem -in my_certificate.pem`

并使用curl与转换时选择的PASSWORD

curl --cert my_certificate.p12:PASSWORD.

(2)将.pem文件拖到钥匙串中,打开infopane,将其设置为“始终信任”SSL和X.509,并记下COMMON-NAME。 (证书名称)

curl --cert COMMON-NAME

对于OSX 10.9和cURL 7.35.0

,两者都适用

答案 3 :(得分:1)

选项--with-openssl不再有效 https://github.com/Homebrew/homebrew-core/pull/36263

只需安装curl-openssl而不是curl

$ brew install curl-openssl

$ /usr/local/opt/curl-openssl/bin/curl --version
curl 7.64.1 (x86_64-apple-darwin18.2.0) libcurl/7.64.1 OpenSSL/1.0.2r zlib/1.2.11 brotli/1.0.7 c-ares/1.15.0 libssh2/1.8.2 nghttp2/1.38.0 librtmp/2.3
Release-Date: 2019-03-27
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz Metalink NTLM NTLM_WB SPNEGO SSL TLS-SRP UnixSockets