3

我正在尝试使用 curl 连接到服务器;此服务器需要 .p12 证书文件和密码。在我运行程序的几周内,这一直不是问题。但是,在我更新到 High Sierra 之后,我现在收到了 LibreSSL 错误。我运行 Windows 7 和 10 的同事也没有这个问题:

在终端:

$ curl -k https://server_metadata_link --cert certificate.p12 --pass “密码”</p>

curl:(58)无法加载 PEM 客户端证书,LibreSSL 错误错误:0906D06C:PEM 例程:PEM_read_bio:没有起始行,(找不到密钥、错误的密码或错误的文件格式?)

在 R 中:

> set_config(配置(ssl_verifyhost = 0L,ssl_verifypeer = 0L))

> set_config(配置(sslcert = 证书.p12,keypasswd = 密码))

> GET(" https://server_metadata_link ")

curl::curl_fetch_memory(url, handle = handle) 中的错误:无法加载 PEM 客户端证书,LibreSSL 错误错误:0906D06C:PEM 例程:PEM_read_bio:没有起始行,(未找到密钥、错误的密码或错误的文件格式? )

我不想回溯到 Sierra,因为我有一位同事使用新的 Mac,他被困在 High Sierra。我认为证书没有错误,就像我说的那样,在升级到 High Sierra 之前它运行良好。在研究了这个问题之后,我认为这可能与 Mac 在 High Sierra 中从 OpenSSL 迁移到 LibreSSL 有关。我不知道这可能会对后端产生什么影响,但它可以解释为什么只有我和我的同事有错误,而 Sierra 的另一位同事没有。

另一个问题可能是我的 curl 版本是 7.54.0(就像我同事的 High Sierra 一样),而最新版本是 7.58.0。我不知道这是否也可能导致问题,但作为一个单独的问题,我不确定如何强制我的 Mac 使用最新版本的 curl;因为它包含在 Mac 中,所以 Homebrew 不会让我安装最新版本。

我唯一的其他注意事项是,如果我将 R 配置从“sslcert = certificate.p12”更改为“sslkey = certificate.p12”,或者将终端命令从“--cert certificate.p12”更改为“--key certificate. p12" 我收到一个正常的 403 错误,说我无法连接到服务器。

任何帮助将不胜感激,如果我应该提供任何其他信息,请告诉我。提前致谢。

4

1 回答 1

4

Homebrew 将允许您安装最新版本的 homebrew,但它仅限于小桶,因为 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

您需要运行导出命令才能运行。更新 $PATH 后,你应该得到

$ which -a curl
/usr/local/opt/curl/bin/curl
/usr/bin/curl

完成此操作后,当使用 p12 文件运行 curl 时,它要求我解锁 OSX 钥匙串并解决could not load PEM client certificate错误。

于 2018-02-20T20:18:27.457 回答