我正在尝试使用curl连接到服务器;此服务器需要.p12证书文件和密码。在我运行程序的几周内,这不是问题。但是,在我更新到High Sierra之后,我现在得到了LibreSSL错误。运行Windows 7和10的同事也没有这个问题:
在终端:
$ curl -k https://server_metadata_link --cert certificate.p12 - pass“password”
卷曲:(58)无法加载PEM客户端证书,LibreSSL错误错误:0906D06C:PEM例程:PEM_read_bio:没有开始行,(找不到密钥,错误的密码短语或错误的文件格式?)
在R:
> set_config(config(ssl_verifyhost = 0L,ssl_verifypeer = 0L))
> set_config(config(sslcert = certificate.p12,keypasswd = password))
> GET(" https://server_metadata_link&#34)
curl :: curl_fetch_memory(url,handle = handle)出错:无法加载PEM客户端证书,LibreSSL错误错误:0906D06C:PEM例程:PEM_read_bio:没有开始行,(找不到密钥,错误的密码短语或错误文件格式?)
我宁愿不回溯到塞拉利昂,因为我有一位同事和一位被困在High Sierra的新Mac。我不认为证书有错误,就像我说的那样,在升级到High Sierra之前,这个工作正常。在研究了这个问题之后,我认为这可能与Mac从OpenSSL迁移到High Sierra的LibreSSL有关。我不知道后端可能会产生什么影响,但它可以解释为什么只有我的同事和我有错误,而另一位与塞拉的同事没有。
另一个问题可能是我的卷曲版本是7.54.0(和我的同事一样是High Sierra),而最新版本是7.58.0。我不知道这是否也会导致问题,但作为一个单独的问题,我不确定如何强制我的Mac使用最新版本的卷曲;由于它包含在Mac中,Homebrew不允许我安装最新版本。
我唯一的另一个注意事项是,如果我从" sslcert = certificate.p12"更改R配置to" sslkey = certificate.p12"或来自" - cert certificate.p12"的终端命令; to" - key certificate.p12"我得到一个正常的403错误,说我无法连接到服务器。
任何帮助将不胜感激,如果有任何其他信息,请告诉我。提前谢谢。
答案 0 :(得分:2)
Homebrew将允许您安装最新版本的homebrew,但它只是keg-only,因为OSX提供了旧版本的curl:
$ brew install curl
==> Downloading https://homebrew.bintray.com/bottles/curl-7.58.0.high_sierra.bottle.tar.gz
Already downloaded: /Users/kyle.varga/Library/Caches/Homebrew/curl-7.58.0.high_sierra.bottle.tar.gz
==> Pouring curl-7.58.0.high_sierra.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.
If you need to have this software first in your PATH run:
echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.zshrc
您需要运行export命令才能运行它。更新$ PATH后,您应该
$ which -a curl
/usr/local/opt/curl/bin/curl
/usr/bin/curl
执行此操作后,当使用p12文件运行curl时,它会要求我解锁OSX钥匙串并解决could not load PEM client certificate
错误。