명령 줄에 대한 인증서를 설치하는 방법


72

따라서 학교에서는 https 사이트에 액세스하려면 인증서를 설치해야합니다. 파이어 폭스에서 인증서를 가져올 수 있습니다. 그러나 명령 줄로는 그렇게 할 수 없습니다. 예를 들어, 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뿐만 아니라 모든 것에 대한 답변을보고 싶습니다.



@EricCarvalho 아니에요 .crt. 필요.cer
범용 전기

git 명령에 문제가 있거나 수행하려는 작업이 있습니까? @AB
AB

@AB github 인증서를 사용하는 대신 git이 학교에서 제공하는 인증서를 사용하도록 허용하고 싶습니다. 또는 그래도 문제가 해결되지 않으면 학교 증명서로 나를 인증 할 수 있습니다.
Universal Electricity

.crt와 .cer 확장자는 서로 바꾸어 사용할 수 있습니다. 파일 이름 확장자 만 바꾸면 같은 형식입니다.
Mike

답변:


117

TL; DR

브라우저뿐만 아니라 모든 것이 작동하려면 해당 CA 인증서를 시스템의 신뢰할 수있는 CA 저장소에 추가해야합니다.

우분투에서 :

  • / usr / local / share / ca-certificates /로 이동하십시오
  • "sudo mkdir school"과 같은 새 폴더를 만듭니다.
  • .crt 파일을 school 폴더로 복사하십시오.
  • 권한이 올바른지 확인하십시오 (폴더의 경우 755, 파일의 경우 644).
  • "sudo update-ca-certificates"를 실행하십시오.

진행중인 작업에 대해서도 설명하겠습니다. 따라서 다른 포스터는 HTTPS를 통해 Github을 사용하기 위해 인증서가 필요하지 않은 이유를 확인합니다.

당신의 학교는 아마도 SSL 통신을 모니터하기 위해 모든 SSL 통신을 가로 채고 있습니다.

그렇게하기 위해, 그들이하는 것은 본질적으로 "중간자"공격이며, 그 때문에 브라우저는 그가 github의 인증서를 확인할 수 없다고 정당하게 불평합니다. 학교 프록시가 github의 인증서를 가져 오는 대신 자체 인증서를 제공하고 있습니다.

브라우저가 github의 인증서에 서명 한 CA에 대해 학교에서 제공 한 인증서를 확인하려고하면 제대로 실패합니다.

따라서 SSL 연결이 학교에서 작동하려면 "MITM"공격을 의식적으로 수용해야합니다. 그리고 학교의 CA 인증서를 신뢰할 수있는 인증서로 추가하면됩니다.

해당 학교 CA를 신뢰하면 가짜 github 인증서가 학교 CA에 의해 확인되므로 가짜 github 인증서에 대한 확인이 작동합니다.

학교 관리자가 암호화 된 모든 연결을 가로 챌 수 있으므로 SSL 연결은 더 이상 안전하지 않습니다.


이것은 본질적으로 dpkg-reconfigure가 필요하지 않은 Mike와 동일한 대답입니다. git 또는 다른 명령 줄이 SSL 확인과 관련하여 100 % 표준이 아닌 것입니다. 학교에서 먼저 구현 한 "SSL 해킹"을 해결하려면 "git hack"을 사용해야합니다.
전신

또한이 명령을 실행하려면 루트 권한이 필요하므로 sudo 명령이 성공해야합니다. 그렇지 않으면 시스템의 인증 기관을 업데이트 할 수 없습니다.
전신

2
제발 편집 추가 사실을 제공하는 답변을 - 코멘트에 두지 마십시오.
guntbert

1
나는 그것이되어야한다고 믿는다 /usr/local/share/ca-certificates/. man update-ca-certificates화이트리스트가 /usr/share/ca-certificates/있지만 /usr/local/share/ca-certificates/디렉토리의 모든 것을 암시 적으로 신뢰하는 방법 에 대해 이야기하는을 참조하십시오 .
Ian Hickson

3
우분투 16.04에서 CA를 추가 한 후 CA 를 픽업하는 /usr/local/share/ca-certificates데 사용해야 sudo dpkg-reconfigure ca-certificates했습니다.
Matt L.

41

ca-certificates패키지는 지침을 가지고 README.Debian:

로컬 인증 기관 암시 적으로 신뢰할 수 설치하려는 경우,로 끝나는 단일 파일로 인증서 파일을 넣어주세요 .crt/usr/local/share/ca-certificates/다시 달린다 update-ca-certificates.

여기에 다른 답변과 다른 디렉토리가 언급되어 있습니다.

/usr/local/share/ca-certificates/

에 복사 한 후 전신의 답변에 언급 된대로 /usr/local/share/ca-certificates/인증서의 권한을 업데이트하고 실행할 수 있습니다 sudo update-ca-certificates. 출력에 인증서가 추가 된 것을 볼 수 있습니다.


4
이것은 우분투 16.04에서도 나에게 효과적이었습니다. 받아 들여진 대답의 길은 나를 위해 작동하지 않았습니다.
Plazgoth

이 답변은 우분투 서버 16.04 LTS에서 작동하는 솔루션입니다.
Lasitha Benaragama

15

확장자 .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

이것은 사실이지만 도움이되지 않았습니다. 그러나 미래에는 사람들에게 도움이 될 것입니다.
Universal Electricity

한 줄을 더 추가하여 git이 인증서를 신뢰하도록 시도해보십시오. cer이 변경되었습니다. 대신 4 단계 중 2 단계에서 .pem으로. @ 유니콘은 매우 맛있다
Mike

3
.CER 파일이 이진 (DER 형식) 인 경우 확장자 만 변경할 수 없습니다. openssl(1)인증서를 PEM 형식으로 변환하는 데 사용 합니다. 실행$ openssl -in mycert.cer -inform DER -out mycert.pem -outform PEM
아치 사용자

1
@Archuser 아마도 올바른 명령은 다음과 같습니다.openssl x509 -inform DER -in certificate.cer -out certificate.pem
artificerpi

5

나는 이전 답변의 다음 편집을 사용합니다.

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.comexample.com같은 호스트 이름입니다.


3

모든 솔루션을 읽고 다음과 같이 해결했습니다.

sudo openssl x509 -inform DER -in certificate.cer -out certificate.crt

sudo mv certificate.crt /usr/share/ca-certificate/

cd /usr/share/ca-certificate

sudo chmod 644 certificate.crt

sudo dpkg-reconfigure ca-certificates

sudo update-ca-certificates

1

파이어 폭스와 구글 크롬에 인증서를 설치해도 비슷한 문제가 있었지만 터미널 sudo apt-get update에서 업데이트가 작동하지 않고 403 Forbidden IP 오류가 발생했습니다. sample.cer 파일이 너무 많습니다. 따라서 기본적으로 먼저 .crt로 변환해야합니다.

sudo openssl x509 -inform DER -in sample.cer -out sample.crt

그래도 sudo dpkg-reconfigure ca-certificates필요한 인증서를 찾을 수 없습니다. 나에게 문제는 내가 잘못된 장소에 인증서를 복사한다는 것입니다.

대신에 그것을 복사하는 $/usr/share/ca-certificates 나는 그것을 복사 한 $/usr/local/share/ca-certificates 그러나 적절한 장소에 배치하여 내 문제를 해결했다. 그러나 여전히 패키지를 업데이트하거나 새 패키지를 설치할 수 없습니다.

빠른 수정 (나를 위해) :

http 대신 ftp 사용

sudo sed -i s/http/ftp/ /etc/apt/sources.list && apt-get update

위의 명령이 작동했습니다. 변경하기 전에 sources.list 파일을 복사하십시오.

명확하지 않거나 적절하지 않은 사항이 있으면 수정하십시오.


0

httpsCLI 또는 GUI 브라우저를 사용하든간에 웹 사이트에 액세스하려면 shool 인증서가 필요하지 않습니다.

githttp를 통해 사용하려면 GitHub 의 프로필 설정에서 공개 키를 등록해야합니다 .

더 많은 정보는 여기에 있습니다 . 여기에서 GitHub 프로필을 변경 하십시오 .


이 시도:

sudo apt-get install w3m
w3m https://github.com/

… 추가 인증서없이 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.