2016-09-22 304 views
7

升级到macOS 10.12 Sierra后,我无法与加密的SSL git服务器同步。通过Safari访问服务器时,证书仍然正常工作。更新到macOS后,git无法在钥匙串中找到证书Sierra

我在尝试推到服务器时,这条消息:

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

它看起来像混帐凭据osxkeychain助手应用程序在MacOS塞拉利昂打破,也不会读出与安全查找器身份返回更多的用户证书

我发现的唯一的解决方法是

  • 出口从钥匙串中的证书和密钥对my_certificate.p12
  • 编辑的.git/config中受影响的帐户使用

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

注意:您需要在P12密码并且为P12输入密码每次你做一个git命令的时间。

P.S:雷达:// 28461462

+0

太棒了!该解决方法仍然有效,但是有人知道这个问题有任何进展吗? – jonasberglund

+0

你为什么认为这与git-credential-osxkeychain有关?看不到任何代码将在那里处理证书https://github.com/git/git/blob/master/contrib/credential/osxkeychain/git-credential-osxkeychain.c – Broatian

+0

它看起来像修复正在进行中CURL回购: –

3

如果你想使用CRT和密钥文件

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

您需要安装卷曲和git与OpenSSL的支持

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

预期这是为我工作

+0

Thx!这对Sierra来说是有效的,尽管现在完全不使用mac OS安全机制,并明确地说明了在mac OS下openssl不受支持。 –

+0

首先你必须卸载 – Tintenklecks

0

简单的ssh-ADD帮我这个;)

ssh-add ~/.ssh/id_rsa 
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告诉你它在哪里把新酿制的Git版本,例如

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

检查您的版本 其中的Git

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

/usr/local/Cellar/git/2.10.2/bin/git clone ....... 
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 

OSE debuggin。

证书位于钥匙串中并被标记为可信。此外还有CA证书。

0

同样的问题与“无法找到证书。”更改证书名称不包含其他字符使用非拉丁字符的字符串后,错误信息已经解决了我。即将“my_cert.p12”重命名为“mysert.p12”确实有助于摆脱此错误。

相关问题