IT

특정 https 원격에 대한 특정 자체 서명 서버 인증서를 수락하도록 Git 구성

lottoking 2020. 6. 15. 08:06
반응형

특정 https 원격에 대한 특정 자체 서명 서버 인증서를 수락하도록 Git 구성


내가 사용중인 프로젝트의 sysadmin은 SSH가 "너무 많은 문제"라고 결정했습니다. 대신 https://URL (및 사용자 이름 / 암호 인증)을 통해 Git에 액세스 할 수 있도록 설정했습니다 . 이 URL의 서버는 자체 서명 된 인증서를 제공하므로 모든 사람이 인증서 유효성 검사를 해제하도록 권고했습니다. 이것은 보안 측면에서 좋은 설정이라고 생각하지 않습니다.

Git에 원격 X (또는 더 나은 저장소로 시작하는 원격 https://$SERVERNAME/)의 경우 특정 인증서를 수락하고 해당 인증서 수락 한다고 Git에 알릴 수 있습니까? 기본적으로 SSH의 서버 키 동작을 복제합니다.


간단히:

  1. 자체 서명 된 인증서 받기
  2. 그것을 (예를 들어 ~/git-certs/cert.pem) 파일에 넣으십시오
  3. 매개 변수를 git사용하여이 인증서를 신뢰하도록 설정http.sslCAInfo

자세한 내용은 :

원격 서버의 자체 서명 된 인증서 받기

서버 URL이 repos.sample.com있고 port를 통해 액세스하려고 한다고 가정하십시오 443.

얻는 방법에는 여러 가지 옵션이 있습니다.

openssl을 사용하여 인증서 받기

$ openssl s_client -connect repos.sample.com:443

파일로 출력을 잡아 cert.pem와 (포함 등)을 제외한 모든 부분 사이를 삭제 -BEGIN CERTIFICATE-하고-END CERTIFICATE-

결과 파일 ~ / git-certs / cert.pem의 내용은 다음과 같습니다.

-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
EwYDVQQIEwxMb3dlciBTYXhvbnkxEjAQBgNVBAcTCVdvbGZzYnVyZzEYMBYGA1UE
ChMPU2FhUy1TZWN1cmUuY29tMRowGAYDVQQDFBEqLnNhYXMtc2VjdXJlLmNvbTEj
MCEGCSqGSIb3DQEJARYUaW5mb0BzYWFzLXNlY3VyZS5jb20wHhcNMTIwNzAyMTMw
OTA0WhcNMTMwNzAyMTMwOTA0WjCBkzELMAkGA1UEBhMCREUxFTATBgNVBAgTDExv
d2VyIFNheG9ueTESMBAGA1UEBxMJV29sZnNidXJnMRgwFgYDVQQKEw9TYWFTLVNl
Y3VyZS5jb20xGjAYBgNVBAMUESouc2Fhcy1zZWN1cmUuY29tMSMwIQYJKoZIhvcN
AQkBFhRpbmZvQHNhYXMtc2VjdXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAMUZ472W3EVFYGSHTgFV0LR2YVE1U//sZimhCKGFBhH3ZfGwqtu7
mzOhlCQef9nqGxgH+U5DG43B6MxDzhoP7R8e1GLbNH3xVqMHqEdcek8jtiJvfj2a
pRSkFTCVJ9i0GYFOQfQYV6RJ4vAunQioiw07OmsxL6C5l3K/r+qJTlStpPK5dv4z
Sy+jmAcQMaIcWv8wgBAxdzo8UVwIL63gLlBz7WfSB2Ti5XBbse/83wyNa5bPJPf1
U+7uLSofz+dehHtgtKfHD8XpPoQBt0Y9ExbLN1ysdR9XfsNfBI5K6Uokq/tVDxNi
SHM4/7uKNo/4b7OP24hvCeXW8oRyRzpyDxMCAwEAATANBgkqhkiG9w0BAQUFAAOC
AQEAp7S/E1ZGCey5Oyn3qwP4q+geQqOhRtaPqdH6ABnqUYHcGYB77GcStQxnqnOZ
MJwIaIZqlz+59taB6U2lG30u3cZ1FITuz+fWXdfELKPWPjDoHkwumkz3zcCVrrtI
ktRzk7AeazHcLEwkUjB5Rm75N9+dOo6Ay89JCcPKb+tNqOszY10y6U3kX3uiSzrJ
ejSq/tRyvMFT1FlJ8tKoZBWbkThevMhx7jk5qsoCpLPmPoYCEoLEtpMYiQnDZgUc
TNoL1GjoDrjgmSen4QN5QZEGTOe/dsv1sGxWC+Tv/VwUl2GqVtKPZdKtGFqI8TLn
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----

웹 브라우저를 사용하여 인증서 받기

Git 리포지토리와 함께 Redmine을 사용하고 웹 UI 및 git 명령 줄 액세스를 위해 동일한 URL에 액세스합니다. 이렇게하면 해당 도메인에 대한 예외를 웹 브라우저에 추가해야했습니다.

Firefox를 사용하여에 가서 자체 Options -> Advanced -> Certificates -> View Certificates -> Servers서명 된 호스트를 발견하고 그것을 선택했으며 Export버튼을 사용하여을 사용하여 만든 것과 정확히 동일한 파일을 얻었습니다 openssl.

참고 : 나는 조금 놀랐습니다. 눈에 띄게 언급 된 권위의 이름은 없습니다. 이건 괜찮아.

전용 파일에 신뢰할 수있는 인증서 보유

이전 단계에서는 일부 파일에 인증서가 있어야합니다. 해당 도메인에 액세스 할 때 자식이 볼 수있는 한 파일은 중요하지 않습니다. 나는 사용했다~/git-certs/cert.pem

참고 :보다 신뢰할 수있는 자체 서명 된 인증서가 필요한 경우 동일한 파일에 넣으십시오.

-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
AnOtHeRtRuStEdCeRtIfIcAtEgOeShErExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----

이것은 작동하지만 (단일 인증서로만 테스트했습니다).

이 인증서를 신뢰하도록 git 구성

$ git config --global http.sslCAInfo /home/javl/git-certs/cert.pem

--system대신을 사용하여 해당 시스템 전체를 시도 할 수도 있습니다 --global.

And test it: You shall now be able communicating with your server without resorting to:

$ git config --global http.sslVerify false #NO NEED TO USE THIS

If you already set your git to ignorance of ssl certificates, unset it:

$ git config --global --unset http.sslVerify

and you may also check, that you did it all correctly, without spelling errors:

$ git config --global --list

what should list all variables, you have set globally. (I mispelled http to htt).


OSX User adjustments.

Following the steps of the Accepted answer worked for me with a small addition when configuring on OSX.

I put the cert.pem file in a directory under my OSX logged in user and thus caused me to adjust the location for the trusted certificate.

Configure git to trust this certificate:

$ git config --global http.sslCAInfo $HOME/git-certs/cert.pem

참고URL : https://stackoverflow.com/questions/9072376/configure-git-to-accept-a-particular-self-signed-server-certificate-for-a-partic

반응형