특정 https 원격에 대한 특정 자체 서명 서버 인증서를 수락하도록 Git 구성
문제가 많다, 는 가참가너있고프제관시스리는는많템다다니설습했정있 를 통해 액세스할 수 있도록 를 설정했습니다.https://
사용자 이름 인증URL(사용자 이름/비밀번호 인증).이 URL의 서버는 자체 서명된 인증서를 제공하므로, 그는 모든 사용자에게 인증서 유효성 검사를 해제할 것을 권고했습니다.이것은 보안 측면에서 좋은 설정이라고는 생각되지 않습니다.
X더으로, Git게원격 X(에는더에 X, 또우시원것은격모, 연는저든의까있니습수장소말대되해)로 시작하는 저장소의 원격을 합니까?https://$SERVERNAME/
) 특정 인증서를 수락하는 것인데, 그 인증서만 수락합니까?기본적으로 SSH의 서버 키 동작을 복제합니다.
간략하게:
- 자체 서명된 인증서 가져오기
- 일부에 넣습니다(예:
~/git-certs/cert.pem
) 파일 - 트
git
를 사용하여 이 합니다.http.sslCAInfo
자세한 내용:
원격 서버의 자체 서명된 인증서 가져오기
서버 은 "URL"로 합니다.repos.sample.com
포트를 통해 액세스하려는 경우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-----
웹 브라우저를 사용하여 인증서 가져오기
나는 Redmine을 Git 저장소와 함께 사용하고 웹 UI와 git 명령줄 액세스에 대해 동일한 URL에 액세스합니다.이런 식으로, 저는 웹 브라우저에 해당 도메인에 대한 예외를 추가해야 했습니다.
파이어폭스를 사용해서, 저는 갔습니다.Options -> Advanced -> Certificates -> View Certificates -> Servers
호스트를 한 후 사용했습니다.Export
버튼을 사용하여 생성된 것과 정확히 동일한 파일을 받았습니다.openssl
.
참고: 눈에 띄게 언급된 당국의 이름이 없기 때문에 조금 놀랐습니다.이것으로 괜찮습니다.
전용 파일에 신뢰할 수 있는 인증서 보유
이전 단계에서는 인증서가 일부 파일에 있어야 합니다.해당 도메인에 액세스할 때 Git에 표시되는 파일이 무엇인지는 중요하지 않습니다.저는 용한사를 요.~/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
.
테스트: 이제 다음을 수행하지 않고도 서버와 통신할 수 있습니다.
$ git config --global http.sslVerify false #NO NEED TO USE THIS
이미 git를 ssl 인증서를 무시하도록 설정한 경우 다음과 같이 설정 해제합니다.
$ git config --global --unset http.sslVerify
또한 맞춤법 오류 없이 모든 작업을 올바르게 수행했는지 확인할 수 있습니다.
$ git config --global --list
전역적으로 설정한 모든 변수를 나열해야 합니다. (http를 htt로 잘못 입력했습니다.)
OSX 사용자 조정.
수락된 답변의 단계에 따라 OSX에서 구성할 때 약간의 추가 작업을 수행했습니다.
제가 넣었습니다.cert.pem
사용자가 로그인한 OSX 아래의 디렉토리에 있는 파일로 인해 신뢰할 수 있는 인증서의 위치를 조정했습니다.
이 인증서를 신뢰하도록 Git 구성:
$ git config --global http.sslCAInfo $HOME/git-certs/cert.pem
인증서가 단일 소스에서 배포되는 기업 환경의 창에서 다음과 같은 답변을 통해 문제를 해결했습니다. https://stackoverflow.com/a/48212753/761755
언급URL : https://stackoverflow.com/questions/9072376/configure-git-to-accept-a-particular-self-signed-server-certificate-for-a-partic
'programing' 카테고리의 다른 글
excel vba의 배열 (0) | 2023.07.01 |
---|---|
데이터베이스에 모든 외부 키를 나열할 수 있습니까? (0) | 2023.07.01 |
중복된 이름의 ID를 별도의 열로 이동하는 방법 (0) | 2023.07.01 |
iOS: 포인트가 rect 내부에 있는지 확인 (0) | 2023.07.01 |
Swift에서 UI_USER_INTERFACE_IDIOM()을 사용하여 현재 디바이스 탐지 (0) | 2023.07.01 |