programing

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

closeapi 2023. 5. 21. 11:30
반응형

방화벽 뒤에서 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_CERTICATE:https://github.com/username/ExcelANT.git/info/refs 에 액세스하는 동안 인증서 확인 실패

켜기GIT_CURL_VERBOSE=1나에게 주는

github.com 포트 443(#0)에 207을 연결하려고 합니다 * 207.97.227.239를 시도하는 중...인증서 확인 위치를 성공적으로 설정했습니다. * CA 파일: 없음 CApath: /usr/ssl/certs * SSL 인증서 문제, CA 인증서가 정상인지 확인합니다.세부 정보: 오류:14090086:SSL 루틴:SSL3_GET_SERVER_CERTICATE:인증서 확인 실패 * 만료됨 * 연결 #0 * github.com 포트 443(#0)에 연결하려고 함 * 207.97.227.239 시도 중...인증서 확인 위치를 성공적으로 설정했습니다. * CA 파일: 없음 CApath: /usr/ssl/certs * SSL 인증서 문제, CA 인증서가 정상인지 확인합니다.세부 정보: 오류:14090086:SSL 루틴:SSL3_GET_SERVER_CERTICATE: 인증서 확인 실패 * 만료됨 * 연결 #0 오류: SSL 인증서 문제, CA 인증서가 정상인지 확인합니다.세부 정보: 오류:14090086:SSL 루틴:SSL3_GET_SERVER_CERTICATE:https://github.com/username/ExcelANT.git/info/refs 에 액세스하는 동안 인증서 확인 실패

fatal: HTTP request failed

이게 내 방화벽에 문제가 있는 건가요, Cygwin?

Git 구성에서 HTTP 프록시를 설정하지 않았습니다.하지만 기본이 아닌 NTLM 인증이 필요한 ISA 서버이기 때문에 Git에게 NTLM을 강제로 사용할 수 있는 방법을 아는 사람이 없는 한 저는 질렸습니다.

문제는 시스템에 CA(인증 기관) 인증서가 설치되어 있지 않다는 것입니다.그리고 이러한 인증서는 Cygwin의 setup.exe로 설치할 수 없습니다.

Cygwin에 Net/ca 인증서 패키지 설치(고맙다 dirkjot)

두 가지 솔루션이 있습니다.

  1. 루트 인증서를 실제로 설치합니다.컬 담당자들이 모질라에서 인증서를 추출했습니다.

cacert.pem파일은 당신이 찾고 있는 것입니다.이 파일에는 250개 이상의 CA 인증서가 포함되어 있습니다(이 숫자를 신뢰하는 방법을 알 수 없음).이 파일을 다운로드하여 개별 인증서로 분할하여 /usr/ssl/certs(CA 경로)에 저장하고 인덱싱해야 합니다.

여기 그것을 하는 방법이 있습니다.Cygwin 설정으로.exe curl 및 OpenSSL 패키지를 설치합니다.

실행:

<!-- language: lang-bash -->

    $ 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도 마찬가지야

  1. SSL 인증서 확인을 무시합니다.

    경고: SSL 인증서 확인을 사용하지 않도록 설정하면 보안 문제가 발생합니다.SSL/HTTPS 연결의 신뢰성을 확인하지 않으면 악의적인 공격자가 신뢰할 수 있는 끝점(예: GitHub 또는 다른 원격 Git 호스트)을 가장할 수 있으며 사용자는 중간자 공격에 취약합니다.이를 솔루션으로 사용하기 전에 보안 문제와 위협 모델을 완전히 이해해야 합니다.

    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 https://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=1Git가 사용 중인 CA 파일의 경로는 출력에서 "CAfile:"로 시작하는 줄에 표시됩니다.

인증서 문제를 해결하려면 이 답변을 건너뛰어도 됩니다.이 답변은 방화벽/프록시 작업을 처리하기 위한 더 나은 솔루션인 IMHO인 방화벽을 통한 터널링 SSH를 처리합니다.

HTTP 액세스를 사용하는 것보다 더 좋은 방법이 있는데, ssh.github.com 서버의 포트 443에서 GitHub에서 제공하는 SSH 서비스를 사용하는 것입니다.

우리는 코르크따개라고 불리는 도구를 사용합니다.이것은 Cygwin(Cygwin 홈페이지의 설정을 통해)과 가장 좋아하는 포장 도구를 사용하는 Linux 모두에서 사용할 수 있습니다.Mac OS X의 경우 MacPorts Homebrew에서 사용할 수 있습니다(실행 가능).brew 적도어도적.

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

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

프록시 호스트 및 프록시 포트는 HTTPS 프록시의 좌표입니다.대상 호스트 및 대상 포트는 터널링할 호스트의 위치입니다.인증 파일은 프록시 서버 사용자 이름/암호가 포함된 한 줄의 텍스트 파일로, 콜론으로 구분됩니다.

예:

abc:very_secret

Git 통신에 "일반" ssh 프로토콜을 사용하기 위한 설치.

을 에을추으로써에 으로써.~/.ssh/config이 트릭은 일반 SSH 연결에 사용할 수 있습니다.

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

이제 ssh-ing to gitproxy를 사용하여 작동하는지 테스트할 수 있습니다.

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.

경우, (파일: 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 모두에서 수년간 이 기능을 사용해 왔습니다.

만약 당신이 원한다면, 당신은 이 블로그 게시물에서 그것에 대해 더 읽을 수 있습니다.

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

export GIT_SSL_NO_VERIFY=true

그 후, RVM 설치 관리자를 Bash로 컬링하는 표준 설치 절차는 매우 효과적이었습니다 :)

매우 간단한 해결책: https://를 git://대체합니다.

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

저는 TorothyGit에 대한 Windows의 문제를 겪었고 이것으로 해결되었습니다.

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

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

하지만, 그 마지막 주장은 거짓입니다. (지금, 혹은 항상 그랬지만, 저는 모릅니다.)

Cygwin 설정으로 이동하여 패키지 'ca-certificates'(Net 아래에 있음)를 포함하기만 하면 됩니다.이것은 저에게 효과가 있었습니다.

SSL을 false로 설정하는 동안 윈도우즈에서 복제하려면 다음과 같이 하십시오.

git -c http.sslVerify=false clone http://example.com/e.git

글로벌 설정을 검색하지 않고 복제하려는 경우.

원래 질문에 Cygwin이 나열되어 있는 것은 알지만, 여기 Cent를 위한 해결책이 있습니다.OS:

curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

출처: http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/

5한 CentOS 5.x 파일yum update openssl되었습니다. OpenSSL은 시스템을 업데이트했습니다.ca-bundle.crt파일을 작성하고 문제를 해결했습니다.

다른 분포에서도 마찬가지일 수 있습니다.

github.com 에서 Cygwin Git 클라이언트를 사용하는 것만 원하는 경우 인증서 파일을 다운로드, 추출, 변환, 분할하는 번거로움 없이 훨씬 간단한 방법이 있습니다.다음과 같이 진행합니다(Windows XP에서 Cygwin 및 Firefox를 사용하는 것으로 가정합니다).

  1. Firefox에서 GitHub 페이지로 이동합니다(임의).
  2. 인증서를 표시하려면 주소 표시줄에서 GitHub 아이콘을 클릭합니다.
  3. "more information" → "display certificate" → "display certificate"를 클릭하고 맨 위에 있는 노드부터 시작하는 계층의 각 노드를 선택합니다. 각 노드에 대해 "Export"를 클릭하고 PEM 형식을 선택합니다.
  • GTecyberTrustGlobalRoot입니다.
  • DigiCert 높은 보증EVRoot CA.
  • DigiCert High Assurance EVCA-1.pem
  • github.com .
  1. 위의 파일을 로컬 드라이브 어딘가에 저장하고 확장자를 .pem으로 변경한 후 Cygwin 설치의 /usr/ssl/certs로 이동합니다(Windows:C:\cygwin\ssl\certs)
  2. (선택사항) Bash에서 c_reshash를 실행합니다.

바로 그겁니다.

물론 이렇게 하면 GitHub에 필요한 하나의 인증서 계층만 설치됩니다.물론 200개의 신뢰할 수 없는 사이트를 설치할 필요 없이 다른 사이트에서도 이 방법을 사용할 수 있습니다.

터미널에서 다음 명령을 시도할 수 있습니다.

git config --global http.sslVerify false

X의 OS X를 통해 할 수 .homebrew:

brew install curl-ca-bundle
git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

공식은 다음을 통해 인증서 번들을 공유에 설치합니다.

share.install 'ca-bundle.crt'

share는 메드는에별뿐입다니칭일대한의 입니다./usr/local/share그리고 컬-카-캔들은 다음과 같이 제공됩니다.Mozilla이것은 많은 이슈에서 언급되고 있는 것을 볼 수 있습니다.Mac OS X에서 이 문제에 접근하는 방법이 간단하지 않기 때문에 도움이 되기를 바랍니다.brew install curl맥주통일 뿐이고 연결되지 않기 때문에 당신도 많은 것을 얻지 못할 것입니다(실행 중).which curl " " " 를 출력합니다./usr/bin/curl이는 OS와 함께 제공되는 기본값입니다.이 게시물은 또한 어느 정도 가치가 있을 수 있습니다.

설치하기 해야 합니다.homebrew기트 레포니까요.SSL 검증 중 오류가 발생할 때 curl이 말하는 대로 수행하면 됩니다.

echo insecure >> ~/.curlrc

일단 당신이 얻으면homebrew에따설된과 됩니다.curl-ca-bundle.curlrcGitHub에서 보고서를 복제해 보십시오.오류가 없는지 확인하면 바로 사용할 수 있습니다.

참고: 에 의지하는 경우.curlrc테스트가 완료되는 대로 시스템에서 제거하십시오.이 파일은 큰 문제를 일으킬 수 있으므로 일시적인 목적으로 사용하고 주의해야 합니다. brew doctor시스템에서 제거하는 것을 잊어버린 경우 불만을 제기합니다.

참고: Git 버전을 업데이트하면 시스템 설정이 삭제되므로 이 명령을 다시 실행해야 합니다(버전에 따라 Git 이진 파일에 상대적으로 저장됨).

실행 후:

brew update
brew upgrade

Git의 새 버전을 얻으면 다음을 다시 실행합니다.

git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

그러면 준비가 다 될 겁니다

마지막으로 Git의 새 버전이 있는 경우 실행:

git config -l --system

다음과 같은 방식으로 오류를 제공해야 합니다.

fatal: '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig' 구성 파일을 읽을 수 없습니다.

이것이 당신이 gGit에게 Mozilla ca-bundle이 어디에 있는지 알려줘야 하는 당신의 팁입니다.

.curlrc문제의 해결책이 될 수도 있고 아닐 수도 있습니다.어떤 경우든 Mozilla ca-bundle을 수동으로 다운로드해야 하는지 여부에 관계없이 시스템에 설치하면 됩니다.그것이 여기서 중요한 것입니다.일단 캐번들을 받으면, 당신은 가도 좋습니다.Git 구성 명령을 실행하고 git를 ca-bundle에 연결하면 됩니다.

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt나에게.zshenv사용하고 있기 때문에 도트 파일zsh . . . . . . . . . . . . . . . . . ..git config경우 SSL을 때(SSL을 통해 GitHub을 누를 때).rvm get stable@했습니다. Maverick은 하는 것 에 이 환경 를 내보낼 가 없다고할 경우를 하여 @Maverick의 파일을 저장합니다.git config --system....이 되길 .이것이 도움이 되길 바랍니다.

컬-카-번들최근에 홈브루에서 제거된 것 같습니다.여기에 추천할 만한 것이 있습니다.

일부 파일을 다음 위치에 놓을 수 있습니다.

$(brew --prefix)/etc/openssl/certs

Solaris Express 11에서도 동일한 문제가 발생했습니다.시간이 좀 걸렸지만, 인증서를 어디에 두어야 할지 가까스로 찾았습니다./etc/openssl/openssl.cnf에 따르면 인증서 경로는 /etc/openssl/certs입니다.알렉세이의 이전 조언을 이용하여 생성된 인증서를 첨부하였습니다.

명령줄에서 OpenSSL을 사용하여 작업이 제대로 작동하는지 확인할 수 있습니다.

openssl s_client -connect github.com:443

ca 인증서(Git 등)를 쉽게 다운로드하기 위해 apt-cyg(apt-get와 유사한 훌륭한 설치 프로그램)를 사용하여 이 문제를 해결했습니다.

apt-cyg install ca-certificates

참고: apt-cyg를 먼저 설치해야 합니다.윈도우즈 명령줄에서 이 작업을 수행할 수 있습니다.

cd c:\cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim

윈도우즈 cmd를 닫고 Cygwin Bash를 엽니다.

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin

라즈베리 파이에서 나는 다음을 마쳤습니다.

git clone http://github.com/andreafabrizi/Dropbox-Uploader.git

출력:

Cloning into 'Dropbox-Uploader'...
error: Problem with the SSL CA cert (path? access rights?) while accessing http://  github.com/andreafabrizi/Dropbox-Uploader.git/info/refs
fatal: HTTP request failed

그래서 저는.

sudo apt-get install ca-certificates

그리고 나서.

git clone http://github.com/andreafabrizi/Dropbox-Uploader.git

일했다

데비안 기반 OS를 사용한 경우 다음을 간단히 실행할 수 있습니다.

apt-get install ca-certificates

GitHub에서 액세스 토큰을 생성한 후 저장합니다. 다시 표시되지 않습니다.

git -c http.sslVerify=false clone https://<username>:<token>@github.com/repo.git

아니면,

git config --global http.sslVerify false
git clone https://github.com/repo.git

시간을 확인합니다.

저는 Git 운영을 불안정하게 만드는 것을 절대적으로 거부했고 여기서 언급된 모든 것을 시도한 후 인증서가 검증에 통과하지 못하는 한 가지 가능한 원인은 날짜(인증서 만료 날짜 또는 로컬 시계)가 잘못되었기 때문이라는 생각이 들었습니다.

▁this▁you▁easily를 입력하면 쉽게 확인할 수 .date종착역에서저의 경우(새로운 라즈베리 파이), 현지 시계는 1970년으로 설정되어 있어서 단순합니다.ntpdate -u 0.ubuntu.pool.ntp.org모든 것을 고쳤습니다. 일일 작업: , 베는트를일립일니크추것넣, 합천을스크작는업론에음다또저한▁in▁for)에 다음 스크립트를 넣는 것도 추천합니다./etc/cron.daily/ntpdate):

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1

파일을 https를 됩니다.netrc 파일을 사용해 보십시오. https를 통해 인증됩니다. .netrc의 홈 합니다.

machine github.com login myusername password mypass

자세한 내용은 다음 게시물을 참조하십시오.

https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj

윈도우즈 cmd에서 Git/curl SSL 확인을 일시적으로 사용하지 않도록 설정하여 RouMao의 솔루션을 향상시킵니다.

set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443

이 솔루션의 좋은 점은 현재 cmd 창에서만 적용된다는 것입니다.

명령어 사용 시도

git config --global http.sslverify false

이 명령은 보안되지 않은 HTTP의 모든 인증서를 허용하지만 전문 환경에서 사용하는 경우 주의하여 사용합니다.

저는 제가 관리해야 하는 협업 개발 플랫폼에서 Git를 구성하는 것과 같은 문제에 직면했습니다.

해결 방법:

  • 서버에 설치된 Curl의 릴리스를 업데이트했습니다.웹 사이트에서 최신 버전을 다운로드하고 설치 절차를 따릅니다. 설치 절차를 따릅니다. 설치 절차는 다음과 같습니다.

  • 서버에 대한 인증서를 전달하는 기관의 인증서를 다시 가져옵니다.

  • 이 인증서를 curl에서 사용하는 CAcert 파일에 추가합니다.은 내서에위는에 ./etc/pki/tls/certs/ca-bundle.crt.

  • 하여 이 경로를 합니다.gitconfig 파일을 편집하여 이 인증서 파일을 사용하도록 git를 구성하고 sslcainfo 경로를 설정합니다. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • 클라이언트 시스템에서 인증서를 가져오고 .gitconfig 파일도 구성해야 합니다.

이것이 여러분 중 일부에게 도움이 되기를 바랍니다.

저는 모든 것을 시도했고, 결국 호스트 파일을 찾았고 GitHub에 대한 무작위 항목이 있었습니다.별칭을 제거하여 문제를 해결했습니다.

%systemroot%\system32\drivers\etc\hosts

아래와 같이 SSL 인증서 인증을 사용하지 않고 단순 사용자 이름 암호 로그인을 사용했습니다.

여기에 이미지 설명 입력

저는 Cygwin과 Git만을 위한 자격증이 필요했기 때문에 @esquifit이 게시한 것을 했습니다.하지만 5단계를 수동으로 실행해야 했고, 시스템에서 c_rehash를 사용할 수 없었습니다.

저는 이 가이드를 따랐습니다.대신 OpenSSL 프레임워크에 CA 인증서를 설치합니다.

두 가지가 필요했습니다.

  1. Cygwin 설정으로 이동하여 패키지 'ca-certificates'(Net 아래에 있음)를 포함합니다(다른 곳에 표시됨).

  2. Git에 설치된 인증서를 찾을 위치를 알려줍니다.

    **GIT_SSL_CAINFO=/usr/ssl/certs/ca-bundle.crt**  GIT_CURL_VERBOSE=1 git ...
    

(자세한 옵션은 필요하지 않음)

또는 옵션을 영구적으로 저장합니다.

   **git config** --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

   git ...

저도 같은 문제가 있었습니다.

인증서 가져오기 또는 SSL 확인 설정을 해제하는 명령이 작동하지 않았습니다.네트워크 프록시에 대한 암호가 만료되었습니다.Windows 사용자 프로필에 있는 .gitconfig 파일에 프록시 구성 항목이 있습니다.

방금 전체 항목을 제거했고 다시 작동하기 시작했습니다.

Mac OS X 10.5(Leopard) 시스템에서 간단한 방법으로 작동할 수 있었습니다.먼저 GitHub 절차를 실행하고 테스트를 수행하면 제 인증서가 실제로 정상임을 보여줍니다.

SSH를 사용하여 GitHub에 연결

ssh -T git@github.com

그리고 마침내 리모콘을 위한 또 다른 URL 형식을 발견했습니다.위에 있는 다른 것들을 시도해 봤는데 작동하지 않았습니다.

2.5 Git Basics - 원격 작업

git@github.com:MyGithubUsername/MyRepoName.git

간단한 "git push myRemoteName"이 잘 작동했습니다!

최근(2014년 7월)에도 유사한 문제가 발생하여 OS X(v10.9.4(Mavericks))에서 "DigiCert High Assurance EV Root CA" 인증서가 만료되었음을 발견했습니다(다른 인증서도 만료되지 않은 인증서가 있음).

  1. 오픈 키체인 액세스
  2. 인증서에서 "DigiCert" 검색
  3. 보기 메뉴 → 만료된 인증서 표시

"DigiCert High Assurance EV Root CA"라는 이름의 인증서 두 개를 찾았습니다. 하나는 2031년 11월에 만료되고 하나는 2014년 7월에 만료됩니다(이전 며칠).만료된 인증서를 삭제하여 문제가 해결되었습니다.

언급URL : https://stackoverflow.com/questions/3777075/ssl-certificate-rejected-trying-to-access-github-over-https-behind-firewall

반응형