9

升级到 macOS 10.12 Sierra 后,我无法与我的加密 SSL git 服务器同步。通过 Safari 访问服务器时,证书仍然可以正常工作。

尝试推送到服务器时收到此消息:

fatal: unable to access 'https://....': SSL: Can't find the certificate "...." and its private key in the Keychain.

证书在钥匙串中,名称是正确的(它在更新之前有效),但不知何故我无法访问它。

我的 ~/.gitconfig 文件仍然包含以下内容:

[http "https://...."]
    sslCert = ....
[credential]
    helper = osxkeychain

到目前为止,还有其他人遇到过这个问题吗?

4

6 回答 6

6

看起来git-credential-osxkeychain助手应用程序在 macOS sierra 上被破坏,并且不会再检索与安全查找身份一起返回的用户证书

我发现的唯一解决方法是

  • 将证书和密钥从钥匙串导出到 my_certificate.p12
  • 编辑 .git/config 以供受影响的帐户使用

    [http]
      sslCert = /Users/foo/certificates/my_certificate.p12
      sslcertpasswordprotected = true
    

注意:您需要 P12 上的密码,并且每次执行 git 命令时都必须输入 p12 的密码。

PS:雷达://28461462

于 2016-09-26T10:37:22.147 回答
4

如果你想使用 crt 和 keyfile

[http]
    sslVerify = false
    sslCert = my.crt
    sslKey = my.key

你需要安装带有 openssl 支持的 curl 和 git

brew install openssl
brew install curl --with-openssl
brew install git --with-brewed-openssl --with-brewed-curl

正如预期的那样,这对我有用

于 2016-10-13T11:37:49.993 回答
0

这对我有用

git -c http.sslCert=/Users/user/Documents/gittest/cert.p12 -c http.sslcertpasswordprotected=true clone https://gitlab.domain.com/user/repository.git

您可以通过添加添加更详细的调试

GIT_CURL_VERBOSE=1 GIT_TRACE=2 GIT_TRACE_PACKET=2 

在命令前面。

证书在钥匙串中并被标记为受信任。还存在 CA 证书。

于 2016-11-23T21:29:19.093 回答
0

首先你要卸载

brew uninstall openssl
brew uninstall curl
brew uninstall git 

像@trollr 提到的那样安装后

brew install openssl
brew install curl --with-openssl
brew install git --with-brewed-openssl --with-brewed-curl

,您还必须确保正确的 git 版本(有 MAAAAAANY 可用,请参阅

find / -name git

)

Homebrew 告诉你它把新的 brewed git 版本放在哪里,例如

/usr/local/Cellar/git/2.10.2/bin/git

检查您使用哪个 git 的版本

或者只是调用绝对路径以确保使用正确的版本,例如

/usr/local/Cellar/git/2.10.2/bin/git clone .......
于 2016-11-08T12:05:36.440 回答
0

在将证书名称更改为不包含拉丁字母以外的其他字符的字符串后,我解决了“找不到证书..”错误消息的相同问题。即将“my_cert.p12”重命名为“mysert.p12”确实有助于摆脱这个错误。

于 2017-06-30T18:44:16.060 回答
0

简单的 ssh-add 帮助我解决了这个问题;)

ssh-add ~/.ssh/id_rsa
于 2016-10-18T06:18:21.857 回答