2014-11-17 9 views
12

우리는 ~/.gitconfigOS X를 : 클라이언트 인증서와 함께 힘내

[http] 
     sslCAInfo = /path/to/git-ca.crt 
     sslCert = /path/to/git-client.crt 
     sslKey = /path/to/git-client.pem 

이것은 리눅스, 윈도우에서 잘 작동하고 OS X <에 다음 줄을 추가하여 클라이언트 인증서와 함께 우리 힘내 서버에 액세스 = 10.8로 거부 정확히 같은 파일.

bash-3.2$ git fetch 
fatal: unable to access 'https://ourserver:12345/repository.git/': SSL: Can't load the certificate "/path/to/git-client.crt" and its private key: OSStatus -25299 

문제는 git version 1.9.3 (Apple Git-50)으로뿐만 아니라 git version 2.0.1으로 발생 : 나는 OS X 10.10에 그것을 시도 할 때, 나는 다음과 같은 오류를 받고 있어요.

업데이트 키 체인에서 해당 항목을 제거한 후, 나는 다음과 같은 충돌지고있어이 충돌 후

bash-3.2$ git fetch 
2014-11-17 09:58:51.257 git-remote-https[2787:12194] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]' 
*** First throw call stack: 
(
    0 CoreFoundation      0x00007fff9828164c __exceptionPreprocess + 172 
    1 libobjc.A.dylib      0x00007fff8f91c6de objc_exception_throw + 43 
    2 CoreFoundation      0x00007fff98125068 -[__NSPlaceholderArray initWithObjects:count:] + 360 
    3 CoreFoundation      0x00007fff98124a2d CFArrayCreate + 141 
    4 libcurl.4.dylib      0x00007fff8f75169e darwinssl_connect_common + 2089 
    5 libcurl.4.dylib      0x00007fff8f75073a Curl_ssl_connect_nonblocking + 36 
    6 libcurl.4.dylib      0x00007fff8f719673 Curl_http_connect + 77 
    7 libcurl.4.dylib      0x00007fff8f727977 Curl_protocol_connect + 129 
    8 libcurl.4.dylib      0x00007fff8f739cef multi_runsingle + 799 
    9 libcurl.4.dylib      0x00007fff8f73993d curl_multi_perform + 170 
    10 git-remote-https     0x0000000109815c8a step_active_slots + 25 
    11 git-remote-https     0x0000000109815cfb run_active_slot + 77 
    12 git-remote-https     0x0000000109817621 http_request + 459 
    13 git-remote-https     0x0000000109816148 http_request_reauth + 34 
    14 git-remote-https     0x0000000109813f76 discover_refs + 476 
    15 git-remote-https     0x00000001098131e4 main + 1556 
    16 libdyld.dylib      0x00007fff94bd25c9 start + 1 
    17 ???         0x0000000000000003 0x0 + 3 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

을, 인증서 항목은 키 체인에 재발생했다. 이상한 점은 OS X 10.8에서 저장소에서 가져 오는 동안 아무 것도 내 키 체인에 추가되지 않는다는 것입니다. 도에, 나는 성공적으로 인증서를 사용하여 openssl 연결할 수

bash-3.2$ git fetch 
fatal: unable to access 'https://ourserver:12345/repository.git/': SSL certificate problem: Invalid certificate chain 

업데이트 3 :

업데이트 내가 OS X 10.9에서 같은 시도 2, 나는 다음과 같은 오류를 받고 있어요 OS의 X 10.9 :

bash-3.2$ openssl s_client -connect ourserver:12345 -cert /path/to/git-client.crt -key /path/to/git-client.pem 
CONNECTED(00000003) 
depth=1 /C=de/O=companyca/CN=internal-ca 
verify error:num=19:self signed certificate in certificate chain 
verify return:0 
--- 
Certificate chain 
0 s:/C=de/O=companyserv/CN=smart 
    i:/C=de/O=companyca/CN=internal-ca 
1 s:/C=de/O=companyca/CN=internal-ca 
    i:/C=de/O=companyca/CN=internal-ca 
--- 
Server certificate 
... 
<----------------------snip----------------------> 
... 
--- 
SSL handshake has read 2348 bytes and written 1360 bytes 
--- 
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA 
Server public key is 2048 bit 
Secure Renegotiation IS supported 
Compression: NONE 
Expansion: NONE 
SSL-Session: 
    Protocol : TLSv1 
    Cipher : DHE-RSA-AES256-SHA 
    Session-ID: E5873AF43D24CEE6529178B4EFD7FE3368711DF1BFBC6CA89C50F8D39DE0B014 
    Session-ID-ctx: 
    Master-Key: <**********> 
    Key-Arg : None 
    Start Time: 1416486728 
    Timeout : 300 (sec) 
    Verify return code: 19 (self signed certificate in certificate chain) 
--- 
closed 

문제는 this one for GitHub와 비슷하지만, 우리는 자체 서명 사용 인증서.

+0

25299는 "지정된 항목이 이미 키 체인에 있습니다"를 의미합니다. 아마도 공개 키를 crt 파일에 두 번 복사 한 것입니까? – Phillip

+0

힌트를 보내 주셔서 감사합니다. 키 체인에서 항목을 제거했습니다. –

+0

@ThomasS. 글쎄, 네 문제를 해결 했니? – musiKk

답변

9

this docker issue과 같은 문제가 발생하여 OSX 컬의 버그 일 가능성이 높습니다.

일부 other post에서는 인증서 일련 번호가 1이거나 32 비트에 들어가기에는 너무 큽니다.

OS X 10.9의 경우 신뢰할 수있는 시스템 키 체인에 인증서를 추가하여 "잘못된 인증서"를 해결해야한다고 생각합니다 (this question에서 논의 됨).

This post에는 OS X 컬의 일부 변경 사항이 설명되어 있습니다. 내 이해에서 다른 curl implementation으로 전환하는 것이 해결책 일 수 있습니다 (하지만 blu를 사용하여 git를 설치하는 경우에만 작동 할 가능성이 높습니다).

+0

불행히도, 링크에서 찾은 정보 중 어느 것도 문제를 해결하는 데 도움이되지 않았습니다. 클라이언트 인증서가있는 https에서 OS X 10.9 이상 버전의 SSH로 전환해야했습니다. –

2

Michal이 이미 언급 한 것처럼 OSX 컬 버그입니다. 가능한 솔루션은 OSX 컬 구현을 의존하지 않는 자식 버전을 설치 하는 것

  1. MacPorts를 설치 : https://www.macports.org/install.php
  2. $ 포트가 자식 설치 -v 인 SelfUpdate
  3. $ 포트
+0

불행하게도 이것은 최종 사용자의 컴퓨터에 macports가 설치 될 것을 기대할 수 없기 때문에 선택 사항이 아닙니다. –

+0

이 10.11에서 작동하지 않습니다. 집에서 사용 했었지만 여전히 실패합니다. –