我正在尝试使用 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 错误,说我无法连接到服务器。
任何帮助将不胜感激,如果我应该提供任何其他信息,请告诉我。提前致谢。