Macos SSL证书-OSX小牛

Macos SSL证书-OSX小牛,macos,curl,ssl,ssl-certificate,Macos,Curl,Ssl,Ssl Certificate,我正在尝试连接到本地主机上使用SSL的应用程序。我使用的是MacOSX小牛。我得到的错误如下: 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 t

我正在尝试连接到本地主机上使用SSL的应用程序。我使用的是MacOSX小牛。我得到的错误如下:

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 
仍然得到相同的错误

--cacert
--cert
在OSX小牛中被破坏

您可以在此处阅读更多信息:

解决方法如下:这表示您需要将证书作为受信任的系统证书导入:

使用密钥链访问将证书导入系统(“系统”)或用户(“登录”)密钥链,并将其标记为始终受SSL和X.509基本策略信任


您可以做两件事:

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

openssl pkcs12 -export -out my_certificate.p12 -inkey my_certificate.pem -in my_certificate.pem`
并将其与转换时选择的
密码一起使用:

curl --cert my_certificate.p12:PASSWORD.
(2) 将.pem文件拖动到您的密钥链中,打开infopane,将其设置为SSL和X.509的“始终信任”,并注意
COMMON-NAME
。(证书名称)


在OSX 10.9和cURL 7.35.0上,这两种方法都适用于我。在某些情况下,使用标准cURL会更好(例如,如果您在Mac代码上为Linux或*BSD开发)。在这种情况下,您可以这样做:

  • 安装

  • 安装具有标准证书支持的curl(无更多密钥链证书)

    brew安装curl——使用openssl和&brew链接curl——强制执行

  • 将根CA证书从安装到/usr/local/etc/openssl/certs/cacert.pem

  • 添加到您的~/.bash_配置文件中

    export CURL\u CA\u BUNDLE=/usr/local/etc/openssl/certs/cacert.pem

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

  • 带有openssl的选项
    --with openssl
    从开始不再起作用

    只需安装
    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
    

    虽然Safari可以毫无问题地识别,但curl仍然无法工作。您知道可以使用一种命令行方法来自动化导入过程(Safari不允许我将证书保存在KeyChain中)Safari不允许您导入它,但是你应该能够直接将其导入系统密钥链。由于我的证书链的这个问题,我无法访问你的解决方法链接。我引用了相关的位。将证书导入您的系统或登录密钥链,并将其标记为受信任-然后您可能需要重新启动浏览器。也就是说。。。如果你不能信任公共证书,那听起来完全是另一个问题。我必须创建文件夹/usr/local/etc/openssl/certs,tnks-力必须替换为--force步骤3和步骤4的作用是什么?我在mac上的curl即使没有它们也能工作。@HakanBaba OS X Mavericks默认情况下没有证书颁发机构的证书。Curl需要这些证书才能通过SSL连接到服务器。
    $ 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