방화벽 뒤의 HTTPS를 통해 GitHub에 액세스하려는 SSL 인증서 거부 : /

방화벽 뒤에 갇혀 있으므로 GitHub 리포지토리에 액세스하려면 HTTPS를 사용해야합니다. Windows XP에서 cygwin 1.7.7을 사용하고 있습니다.

리모컨을 (으)로 설정하려고 시도했지만 https://username@github.com/username/ExcelANT.git비밀번호를 묻는 메시지를 표시했지만 입력 한 후에는 아무 것도 수행하지 않습니다.
https://username:<password>github.com/username/ExcelANT.git빈 저장소를 처음부터 복제하지만 매번 같은 오류가 발생합니다.

오류 : SSL 인증서 문제입니다. CA 인증서가 올바른지 확인하십시오. 세부 정보 :
오류 : 14090086 : SSL 루틴 : SSL3_GET_SERVER_CERTIFICATE : https://github.com/username/ExcelANT.git/info/refs에 액세스하는 동안 인증서 확인에 실패했습니다.

켜면 GIT_CURL_VERBOSE=1나에게 준다

* github.com 포트 443 (# 0)에 connect ()를 연결
하려고합니다. * 207.97.227.239 시도 중 … * 인증서 확인 위치 설정 :
* CAfile : 없음
CApath : / usr / ssl / certs
* SSL 인증서 문제, SSL 인증서 문제 CA 인증서는 정상입니다. 세부 사항 :
error : 14090086 : SSL 루틴 : SSL3_GET_SERVER_CERTIFICATE : 인증서 확인 실패
* 만료 지우기
오류 : 14090086 : SSL 루틴 : SSL3_GET_SERVER_CERTIFICATE : 인증서 확인 실패
* 만료 됨 지우기
* 연결 종료 중 # 0
오류 : SSL 인증서 문제, CA 인증서가 올바른지 확인하십시오 . 세부 사항 :
오류 : 14090086 : SSL 루틴 : SSL3_GET_SERVER_CERTIFICATE : 액세스하는 동안 인증서 확인 실패
* 연결 종료 # 0
* github.com 포트 443 (# 0)에 connect ()를 연결
하려고합니다. 위치 확인 :
* CAfile : 없음
CApath : / usr / ssl / certs
* SSL 인증서 문제, CA 인증서가 정상인지 확인하십시오. 세부:

https://github.com/username/ExcelANT.git/info/refs

fatal: HTTP request failed

방화벽, cygwin에 문제가 있습니까?

Git 구성에서 HTTP 프록시를 설정하지 않았지만 기본이 아닌 NTLM 인증이 필요한 ISA 서버이므로 git이 NTLM을 사용하도록 강제하는 방법을 모른다면 정찰을받습니다.



답변

인증서 문제를 해결하려면이 답변을 건너 뛰십시오. 이 답변은 방화벽을 통한 터널링 ssh를 다루며 이는 IMHO가 방화벽 / 프록시를 처리하는 더 나은 솔루션입니다.

http 액세스를 사용하는 것보다 낫고 ssh.github.com 서버의 포트 443에서 github이 제공하는 ssh 서비스를 사용하는 것이 더 좋습니다.

우리는 코르크 마개라는 도구를 사용합니다. CygWin (cygwin 홈페이지에서 설정을 통해)과 자주 사용하는 패키징 도구를 사용하여 Linux에서 사용할 수 있습니다. MacOSX의 경우 macports에서 사용할 수 있으며 최소한 추출 할 수 있습니다.

명령 줄은 다음과 같습니다.

$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>

proxyhost와 proxyport는 https 프록시의 좌표입니다. targethost 및 targetport는 터널링 할 호스트의 위치입니다. authfile은 프록시 서버 사용자 이름 / 암호가 콜론으로 구분 된 한 줄의 텍스트 파일입니다.

예 :

abc:very_secret

자식 통신에 “일반”ssh 프로토콜을 사용하기위한 설치

~/.ssh/config이것을 트릭에 추가하면 일반적인 ssh 연결에 사용할 수 있습니다.

Host github.com
  HostName ssh.github.com
  Port 443
  User git
  ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth

이제 gitproxy에 ssh-ing하여 작동하는지 테스트 할 수 있습니다

pti@pti-laptop:~$ ssh github.com
PTY allocation request failed on channel 0
Hi ptillemans! You've successfully authenticated, but GitHub does not provide shell access.
       Connection to github.com closed.
pti@pti-laptop:~$

(참고 : 이전에 github에 로그인 한 적이없는 경우 ssh는 알려진 호스트 파일에 서버 키를 추가하도록 요청합니다. 편집증 인 경우 github 사이트에 표시된 RSA 지문을 확인하는 것이 좋습니다. 키를 올렸습니다).

이 방법의 약간의 변형은 개인 계정을 전문가 계정과 분리하기 위해 다른 키로 저장소에 액세스해야하는 경우입니다.

#
# account dedicated for the ACME private github account
#
Host acme.github.com
  User git
  HostName ssh.github.com
  Port 443
  ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
  IdentityFile ~/.ssh/id_dsa_acme

즐겨!

우리는 Linux, Mac 및 Windows 모두에서 수년 동안 이것을 사용해 왔습니다.

당신이 원한다면 당신은 이 블로그 게시물에서 그것에 대한 자세한 내용을 읽을 수 있습니다


답변

문제는 시스템에 인증 기관 인증서가 설치되어 있지 않다는 것입니다. 그리고이 인증서는 cygwin ‘s setup.exe와 함께 설치할 수 없습니다.

업데이트 : cygwin에 net / ca-certificates 패키지 설치 (dirkjot 덕분에)

두 가지 해결책이 있습니다.

  1. 실제로 루트 인증서를 설치하십시오. Curl guys가 Mozilla에서 인증서를 추출했습니다. .

    cacert.pem파일은 당신이 찾고있는 것입니다. 이 파일에는 250 개 이상의 CA 인증서가 포함되어 있습니다 (이 수의 ppl을 신뢰하는 방법을 모름). 이 파일을 다운로드하여 개별 인증서로 분할하여 / usr / ssl / certs (CApath)에 넣고 색인을 생성해야합니다.

    방법은 다음과 같습니다. cygwin setup.exe를 사용하여 curl 및 openssl 패키지를 설치하십시오.

    $ cd /usr/ssl/certs
    $ curl http://curl.haxx.se/ca/cacert.pem |
      awk '{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'
    $ c_rehash

    중요 : 사용 c_rehash하려면 설치해야 openssl-perl합니다.

  2. SSL 인증서 확인을 무시하십시오.

    경고 : SSL 인증서 확인을 비활성화하면 보안에 영향을 미칩니다. SSL / HTTPS 연결의 진위 여부를 확인하지 않으면 악의적 인 공격자가 신뢰할 수있는 엔드 포인트 (예 : GitHub 또는 다른 원격 Git 호스트)를 가장 할 수 있으며 Man-in-the-Middle 공격에 취약합니다. 이를 솔루션으로 사용하기 전에 보안 문제 위협 모델 을 완전히 이해해야합니다 .

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    

답변

참고 : SSL 확인을 비활성화하면 보안에 영향을 미칩니다 . Git을 사용하여 네트워크를 통해 데이터를 전송할 때 Man in the Middle 공격이 가능합니다. 이를 솔루션으로 사용하기 전에 보안 관련 사항을 완전히 이해해야합니다. 또는 루트 인증서를 설치하십시오.

한 가지 방법은 SSL CERT 확인을 비활성화하는 것입니다.

git config --global http.sslVerify false

이렇게하면 CURL이 HTTPS 인증을 확인하지 못하게됩니다.

하나의 저장소에만 해당 :

git config http.sslVerify false

답변

Git이 전체 시스템에서 사용하는 것을 교체하지 않고 업데이트 된 인증서 번들을 사용하기를 원했습니다. Git이 내 홈 디렉토리에서 특정 파일을 사용하도록하는 방법은 다음과 같습니다.

mkdir ~/certs
curl http://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem

이제 .gitconfig피어 확인에 이것을 사용하도록 업데이트하십시오 .

[http]
sslCAinfo = /home/radium/certs/cacert.pem

참고 절대 경로를 사용하고 있습니다. Git은 여기서 경로 확장이 없으므로 ~추한 멍청이 없이는 사용할 수 없습니다 . 또는 구성 파일을 건너 뛰고 GIT_SSL_CAINFO대신 환경 변수 를 통해 경로를 설정할 수 있습니다 .

이 문제를 해결하려면을 설정하십시오 GIT_CURL_VERBOSE=1. Git이 사용하고있는 CA 파일의 경로는 출력에서 ​​”CAfile :”로 시작하는 행에 표시됩니다.


답변

이 작업을 수행하려면 (CentOS 5.6에서 RVM 설치) 다음을 실행해야했습니다.

export GIT_SSL_NO_VERIFY=true

그 후 RVM 설치 프로그램을 bash로 컬링하기위한 표준 설치 절차는 대단했습니다 🙂


답변

매우 간단한 해결책 : https : //를 git : //로 바꾸십시오.

https : //the.repository 대신 git : //the.repository를 사용 하면 작동합니다.

TortoiseGit이있는 Windows 에서이 문제가 발생하여 해결되었습니다.


답변

Alexey Vishentsev의 가장 인기있는 답변은 다음과 같습니다.

문제는 시스템에 인증 기관 인증서가 설치되어 있지 않다는 것입니다. 그리고이 인증서는 cygwin ‘s setup.exe와 함께 설치할 수 없습니다.

그러나 마지막 주장은 거짓입니다 (현재 또는 항상 알고 있습니다).

cygwin 설정으로 가서 ‘ca-certificates’패키지 (Net 아래에 있음)를 포함시키기 만하면됩니다. 이것은 나를 위해 속임수를했다.