따라서 학교에서 https 사이트에 접속하려면 인증서를 설치해야 합니다. Firefox에서는 인증서를 가져올 수 있습니다. 그러나 명령줄에서는 그렇게 할 수 없습니다. 예를 들어, 실행하면 다음과 같은 git push
결과를 얻습니다.
fatal: unable to access 'https://github.com/user/repo': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
이를 제거하려면 인증서를 어떻게 가져오나요? 가져오기가 나를 대신해 인증할 수 있어야 합니다. 또한 파일이므로 .cer
에 대한 답변이 .crt
작동하지 않습니다. 또한 이미 해본 것처럼 Git을 설정하는 방법에 대한 단계를 원하지 않습니다. 그렇게 하는 것이 가능한지 알고 싶습니다. 아니면 git
명령을 사용하여 인증을 완전히 비활성화하고 다음과 같은 인증서를 무시하도록 할 수 있습니까?대답여기서 말해요? 또한 웹페이지가 로드되는 것을 원하지 않으므로 그렇게 하도록 Firefox를 설정했습니다. git push
다음과 같은 표준 출력을 제공하는 명령을 원합니다 .
[master 630d087] message
1 file changed, 93 insertions(+), 80 deletions(-)
rewrite somefile (84%)
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 978 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To https://github.com/User/Repo.git
851ae39..630d087 master -> master
참고: 나는 그것이 git config --global http.sslverify false
. 하지만 나는 git hack뿐만 아니라 모든 것에 대한 답을 보고 싶습니다.
답변1
TL;DR
브라우저뿐만 아니라 모든 것이 작동하려면 해당 CA 인증서를 시스템의 신뢰할 수 있는 CA 저장소에 추가해야 합니다.
우분투에서는:
- /usr/local/share/ca-certificates/로 이동합니다.
- 새 폴더(예: "sudo mkdir school")를 만듭니다.
- .crt 파일을 학교 폴더에 복사하세요.
- 권한이 올바른지 확인하세요(폴더의 경우 755, 파일의 경우 644).
- "sudo update-ca-certificates" 실행
왜
무슨 일이 일어나고 있는지 설명하겠습니다. 그러면 다른 포스터에서는 HTTPS를 통해 Github을 사용하는 데 인증서가 필요하지 않은 이유를 확인할 수 있습니다.
여기서 무슨 일이 일어나고 있는지는 학교가 아마도 SSL 통신을 모니터링하기 위해 모든 SSL 통신을 가로채고 있다는 것입니다.
이를 위해 그들이 하는 일은 본질적으로 "중간자" 공격이며, 이로 인해 브라우저는 github의 인증서를 확인할 수 없다고 정당하게 불평합니다. 학교 프록시는 github의 인증서를 가져오고 대신 자체 인증서를 제공합니다.
브라우저가 github의 인증서에 서명한 CA에 대해 학교에서 제공한 인증서를 확인하려고 시도하면 정당하게 실패합니다.
따라서 학교에서 SSL 연결이 작동하려면 "MITM" 공격을 의식적으로 받아들여야 합니다. 그리고 학교의 CA 인증서를 신뢰할 수 있는 인증서로 추가하면 됩니다.
해당 학교 CA를 신뢰하면 가짜 github 인증서가 학교 CA에서 확인되므로 가짜 github 인증서 확인이 작동합니다.
학교 관리자가 모든 암호화된 연결을 가로챌 수 있으므로 SSL 연결은 더 이상 안전하지 않습니다.
답변2
패키지 ca-certificates
에는 다음 지침이 포함되어 있습니다 README.Debian
.
암시적으로 신뢰할 수 있는 로컬 인증 기관을 설치하려면 인증서 파일을
.crt
into 로 끝나는 단일 파일로 저장/usr/local/share/ca-certificates/
하고 다시 실행하세요update-ca-certificates
.
여기에는 다른 답변과 다른 디렉토리가 언급되어 있습니다.
/usr/local/share/ca-certificates/
복사한 후 /usr/local/share/ca-certificates/
인증서의 권한을 업데이트하고 sudo update-ca-certificates
Telegraphers 답변에 언급된 대로 실행할 수 있습니다. 출력에 인증서가 추가된 것을 볼 수 있습니다.
답변3
확장자 .crt, .pem 및 .cer은 서로 바꿔 사용할 수 있습니다. 파일 이름 확장자를 변경하면 형식이 동일합니다. 이 시도:
$ sudo cp mycert.cer /usr/share/ca-certificates/mycert.pem
$ sudo dpkg-reconfigure ca-certificates
$ sudo update-ca-certificates
$ git config --global http.sslCAInfo /usr/share/ca-certificates/mycert.pem
답변4
이전 답변을 다음과 같이 편집하여 사용합니다.
sudo -i
echo | openssl s_client -showcerts -servername site.example.com -connect example.com:443 2>/dev/null | awk '/-----BEGIN CERTIFICATE-----/, /-----END CERTIFICATE-----/' >> /usr/local/share/ca-certificates/ca-certificates.crt
update-ca-certificates
종종 둘 다 site.example.com
동일한 example.com
호스트 이름입니다.