Arch Linux에서 인증서 기반 투명 프록시를 어떻게 처리합니까?

Arch Linux에서 인증서 기반 투명 프록시를 어떻게 처리합니까?

저는 직장에 Arch Linux VM을 설정했고, 저희 회사는 자체 서명된 인증서가 있는 투명(컷스루) 프록시를 사용하고 인증이 필요합니다. 패키지를 설치하려고 할 때마다 pacman다음 오류가 발생합니다(예: 설치 중 lynx).

오류: Mirrors.kernel.org에서 'lynx-2.8.7-6-x86_64.pkg.tar.xz' 파일을 검색하지 못했습니다. SSL 인증서 문제: 인증서 체인의 자체 서명된 인증서

에서 정의한 모든 미러에 대해 이 오류가 발생합니다 /etc/pacman.d/mirrorlist. 와 같은 다른 HTTP/S 클라이언트를 사용하려고 할 때 비슷한 문제가 있지만 curlFTP에는 아무런 문제가 없습니다(주로 우리 회사는 포트 80 및 443만 모니터링하기 때문입니다).

내가 이미 시도한 것 ...

  • 내 회사의 자체 서명된 CA 인증서를 에 배치 /usr/share/ca-certificates하고/etc/ca-certificates
  • 내 자격 증명으로 회사의 프록시 서버를 설정 http_proxy하고 가리키도록 설정https_proxy
  • 프록시 서버를 관리하는 사람과 이야기를 나눴지만 그 사람은 Linux에 대해 아무것도 모르기 때문에 어디서부터 시작해야 할지 전혀 모릅니다.

지금은 무언가를 설치하거나 인터넷에 액세스해야 할 때 이 문제를 해결하기 위해 홈 서버에 대한 SSH 터널을 엽니다.

아래는openssl s_client -CApath /etc/ca-certificates -showcerts -connect mirrors.kernel.org:443

연결됨(00000003)
깊이=0 C = US, ST = 캘리포니아, L = San Jose, O = Linux 커널 조직, CN = *.kernel.org
오류 확인:num=20:로컬 발급자 인증서를 가져올 수 없습니다.
반품 확인:1
깊이=0 C = US, ST = 캘리포니아, L = San Jose, O = Linux 커널 조직, CN = *.kernel.org
오류 확인:숫자=27:인증서를 신뢰할 수 없음
반품 확인:1
깊이=0 C = US, ST = 캘리포니아, L = San Jose, O = Linux 커널 조직, CN = *.kernel.org
확인 오류:num=21:첫 번째 인증서를 확인할 수 없습니다.
반품 확인:1
---
인증서 체인
 0 초:/C=US/ST=캘리포니아/L=산호세/O=리눅스 커널 조직/CN=*.kernel.org
   i:/C=US/ST=MyCompanyState/L=MyCompanyCity/O=MyCompanyName/OU=IT/CN=MyCompanyProxyServer/[이메일 보호됨]
-----인증서 시작----
... ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ
-----인증서 종료----
---
서버 인증서
제목=/C=US/ST=캘리포니아/L=산호세/O=리눅스 커널 조직/CN=*.kernel.org
발급자=/C=US/ST=MyCompanyState/L=MyCompanyCity/O=MyCompanyName/OU=IT/CN=MyCompanyProxyServer/[이메일 보호됨]
---
클라이언트 인증서 CA 이름이 전송되지 않았습니다.
---

메모대신 FTP 미러를 사용해 볼 수도 있지만 다른 HTTP/S 애플리케이션(예: curl)의 문제는 실제로 해결되지 않습니다.

답변1

제공하신 정보로 볼 때 /etc/ca-certificates파일에 서버 인증서를 추가한 것으로 보입니다. 대신 CA 인증서를 추가해야 합니다.

실행한 명령 openssl s_client -showcerts에는 첫 번째 인증서 이후에 하나 이상의 다른 인증서가 포함되어 있어야 합니다. 이들은 당신이 관심을 갖고 있는 것들입니다.
첫 번째 인증서 이후에 두 개 이상의 인증서가 있는 경우 파일에 두 인증서를 모두 추가해야 할 수도 있습니다 ca-certificates. 이는 모두 프록시에 인증 기관이 설정되는 방식에 따라 다릅니다. 그러나 둘 다 필요하지 않고 둘 다 추가해도 문제가 되지 않습니다.

그러나 openssl s_client -showcerts첫 번째 인증서 이외의 인증서가 표시되지 않으면 큰 문제가 있는 것입니다. 이는 프록시가 서명 인증서를 보내지 않음을 의미합니다. 네트워크 팀에 연락하여 요청할 수 있습니다. 보안상 그들이 당신에게 정보를 제공하지 않을 이유가 전혀 없습니다.열쇠보호해야 하는 것입니다.)


예를 들어 다음과 같은 결과를 얻습니다(예, SSL 프록시 뒤에 있지 않기 때문에 실제 인증서를 얻지만 개념은 그대로 유지됩니다).

# openssl s_client -showcerts -connect mirrors.kernel.org:443
연결됨(00000003)
깊이=2 C = US, O = "thawte, Inc.", OU = 인증 서비스 부서, OU = "(c) 2006 thawte, Inc. - 승인된 용도로만 사용", CN = thawte 기본 루트 CA
오류 확인:num=20:로컬 발급자 인증서를 가져올 수 없습니다.
반품 확인:0
---
인증서 체인
 0 초:/C=US/ST=캘리포니아/L=산호세/O=리눅스 커널 조직/CN=*.kernel.org
   i:/C=US/O=Thawte, Inc./CN=Thawte SSL CA
-----인증서 시작----
MIID2zCCAsOgAwIBAgIQZ7xPhWo7v0ZlPnI5mJWMazANBgkqhkiG9w0BAQUFADA8
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMuMRYwFAYDVQQDEw1U
aGF3dGUgU1NMIENBMB4XDTEyMDEwMzAwMDAwMFoXDTE0MDQwMzIzNTk1OVowdDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExETAPBgNVBAcUCFNhbiBK
b3NlMSYwJAYDVQQKFB1UaGUgTGludXggS2VybmVsIE9yZ2FuaXphdGlvbjEVMBMG
A1UEAxQMKi5rZXJuZWwub3JnMIIBijANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEApSbajGUzM+C1Oz6CzyPmek9HH03ToicZeHxOlBfS7yyvIyybxTCBrmkItyc+
sf6b5g2Zf8IPwloaj+ACQaLfm0OOaFrvHERIN1t0pitvmeSDI6BXVYq0eSLEPpSG
YC/3AMdKE21NO1jmL7mtsCB8CW4NAAvy97HkvsPsTPNOp6d/LtcIMYRS347RFgRj
O/J1PU05EEjcpXdy6eCyJLwi2AFLgfBzjS+0UK4tq01HFalULfO/akjC59WG+qrc
P/Yi/1TM8bE2mun1mcuCP7bmyZFDfrGnO2TYcZ/s7z4bTUmEixR6kTdj1foqi7Xk
svko9dXCiUZj4c692ZKZXE+gJwIDAQABo4GgMIGdMAwGA1UdEwEB/wQCMAAwOgYD
VR0fBDMwMTAvoC2gK4YpaHR0cDovL3N2ci1vdi1jcmwudGhhd3RlLmNvbS9UaGF3
dGVPVi5jcmwwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDIGCCsGAQUF
BwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AudGhhd3RlLmNvbTANBgkq
hkiG9w0BAQUFAAOCAQEAd7mKHpW1mCB1fGuvR44iX83PmSy3BVEpvOlnH1zNSU/Y
2zMmKDbXqAJTY6t20Yq/GpjW3BA2G4xEA6i64WAGZcSmXfc/NDOSh0i5lTrCofCG
3tuts9HTmHJLfeAz9cZiT4rc4ROMV4K17/Uw81UIid952M/4b6OvhaCu5OSnvDUI
3Z6OUy+AuJHbwEyB5bGOJ/mqVKUztgUK17bJiwDhwZ4Q8PT6YKUj5NgPcG6cUKxY
HK6yxvoqH/s1DQJB3JHDSFVgY47ECmoHyQ5MvJN+naNrZJUIH0RTmmHNbQH772W7
m8I66jiDhXTd6+4v8DipvHJOSEv7ebG0Jf6gv7lc6w==
-----인증서 종료----
 1초:/C=US/O=Thawte, Inc./CN=Thawte SSL CA
   i:/C=US/O=thawte, Inc./OU=인증 서비스 부서/OU=(c) 2006 thawte, Inc. - 승인된 용도로만 사용/CN=thawte 기본 루트 CA
-----인증서 시작----
MIIEbDCCA1SgAwiBAgIQTV8sNAiyTCDNbVB+JE3J7DANBgkqhkiG9w0BAQUFADCB
qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMPIDIw
MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTAwMjA4MDAwMDAwWhcNMjAw
MjA3MjM1OTU5WjA8MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMu
MRYwFAYDVQQDEw1UaGF3dGUgU1NMIENBMIIBIjanBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAmeSFW3ZJfS8F2MWsyMip09yY5tc0pi8M8iIm2KPJFEyPBaRF6BQM
WJAFGrfFwQalgK+7HulrUjSIw1nn72vEJ0GMK2Yd0OCjl5gZNEtB1ZjVxwWtouTX
7QytT8G1sCH9PlBTssSQ0NQwZ2ya8Q50xMLciuiX/8mSrgGKVgqYMrAAI+yQGmDD
7bs6yw9jnw1EyVLhJZa/7VCViX9WFLG3YR0cB4w6LPf/gN45RdWvGtF42MdxaqMZ
pzJQIenyDqHGEwNESNFmqFJX1xG0k4vlmZ9d53hR5U32t1m0drUJN00GOBN6HAiY
XMRISstSoKn4sZ2Oe3mwIC88lqgRYke7EQIDAQABo4H7MIH4MDIGCCsGAQUFBwEB
BCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AudGhhd3RlLmNvbTASBgNVHRMB
Af8ECDAGAQH/AgEAMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudGhhd3Rl
LmNvbS9UaGF3dGVQQ0EuY3JsMA4GA1UdDwEB/wQEAwiBBjAoBgNVHREEITAfpB0w
GzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItOTAdBgNVHQ4EFgQUp6KDuzRFQD38
1TBPERk+oQGf9tswHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutXSFAwDQYJ
KoZIhvcNAQEFBQADggEBAIAigOBsyJUW11cmh/NyNNvGclYnPtOW9i4lkaU+M5en
S+Uv+yV9Lwdh+m+DdExMU3IgpHrPUVFWgYiwbR82LMgrsYiZwf5Eq0hRfNjyRGQq
2HGn+xov+RmNNLIjv8RMVR2OROiqXZrdn/0Dx7okQ40tR0Tb9tiYyLL52u/tKVxp
EvrRI5YPv5wN8nlFUzeaVi/oVxBw9u6JDEmJmsEj9cIqzEHPIqtlbreUgm0vQF9Y
3uuVK6ZyaFIZkSqudZ1OkubK3lTqGKslPOZkpnkfJn1h7X3S5XFV2JMXfBQ4MDzf
huNMrUnjl1nOG5srztxl1Asoa06ERlFE9zMILViXIa4=
-----인증서 종료----
 2초:/C=US/O=thawte, Inc./OU=인증 서비스 부서/OU=(c) 2006 thawte, Inc. - 승인된 사용 전용/CN=thawte 기본 루트 CA
   i:/C=ZA/ST=웨스턴 케이프/L=케이프 타운/O=Thawte 컨설팅 cc/OU=인증 서비스 부서/CN=Thawte Premium Server CA/[이메일 보호됨]
-----인증서 시작----
MIIERTCCA66gAwiBAgIQM2VQCHmtc+IwueAdDX+skTANBgkqhkiG9w0BAQUFADCB
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
cnZlckB0aGF3dGUuY29tMB4XDTA2MTExNzAwMDAwMFoXDTIwMTIzMDIzNTk1OVow
gakxCzAJBgNVBAYTALVTMRUwEwYDVQQKEwx0aGF3dGUsIEluYy4xKDAmBgNVBAST
H0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xODA2BgNVBAsTLyhjKSAy
MDA2IHRoYXd0ZSwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYD
VQQDExZ0aGF3dGUgUHJpbWFyeSBSb290IENBMIIBIjanBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEArKDw+4BZ1JzHpM+doVlzCRBFDA0sbmjxbFtIaElZN/wLMxnC
d3/MEC2VNBzm600JpxzSuMmXNgK3idQkXwbAzESULI0CYm/rWt0RjSiaXISQEHoN
vXRmL2o4oOLVVETrHQefB7pv7un9Tgsp9T6EoAHxnKv4HH6JpOih2HFlDaNRe+68
0iJgDblbnd+6/FFbC6+Ysuku6QToYofeK8jXTsFMZB7dz4dYukpPymgHHRydSsbV
L5HMfHFyHMXAZ+sy/cmSXJTahcCbv1N9Kwn0jJ2RH5dqUsveCTakd9h7h1BE1T5u
KWn7OUkmHgmlgHtalevoJ4XJ/mH9fuZ8lx3VnQIDAQABo4HCMIG/MA8GA1UdEwebB
/wQFMAMBAf8wOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHBz
Oi8vd3d3LnRoYXd0ZS5jb20vY3BzMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
e1tFz6/Oy3r9MZIaarbzRutXSFAwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cDovL2Ny
bC50aGF3dGUuY29tL1RoYXd0ZVByZW1pdW1TZXJ2ZXJDQS5jcmwwDQYJKoZIhvcN
AQEFBQADgYEAhKhMyT4qvJrizI8LsiV3xGGJiWNa1KMVQNT7Xj+0Q+pjFytrmXSe
Cajd1FYVLnp5MV9jllMbNNkV6k9tcMq+9oKp7dqFd8x2HGqBCiHYQZl/Xi6Cweiq
95OBBaqStB+3msAHF/XLxrRMDtdW3HEgdDjWdMbWj2uvi42gbCkLYeA=
-----인증서 종료----
---
서버 인증서
제목=/C=US/ST=캘리포니아/L=산호세/O=리눅스 커널 조직/CN=*.kernel.org
발급자=/C=US/O=Thawte, Inc./CN=Thawte SSL CA
---
클라이언트 인증서 CA 이름이 전송되지 않았습니다.
---
SSL 핸드셰이크는 3566바이트를 읽고 636바이트를 썼습니다.
---
신규, TLSv1/SSLv3, 암호화는 RC4-SHA입니다.
서버 공개 키는 2048비트입니다.
보안 재협상이 지원됩니다.
압축: 없음
확장: 없음
SSL 세션:
    프로토콜 : TLSv1
    암호 : RC4-SHA
    세션 ID: EAB5C93513AA8829036C7BB9E3F74D99076C8A339EB220832F76DF73D52D0B22
    세션 ID-ctx:
    마스터 키: 0A599E2D1CCAA8249E50871FDF03A2137BA034BCB20FA691D1413822BE08E15303CB0F59CDEC0376D670E08632EF0D46
    키-인수: 없음
    PSK ID: 없음
    PSK ID 힌트: 없음
    SRP 사용자 이름: 없음
    TLS 세션 티켓:
    0000 - ac 28 d2 81 da 5e b9 7f-43 52 ab e8 2c b0 ac 1d .(...^..CR..,...
    0010 - c0 27 92 cb 5e 0e 1e 36-e4 77 34 bf 34 f8 cb 2f .'..^..6.w4.4../
    0020 - 04 af 1a 9b ea b3 9e 6f-32 44 4b ce d1 b4 2b 42 .......o2DK...+B
    0030 - 55 a8 e3 ec 9a 6a 76 5d-c0 84 e0 aa 20 29 ae ac U....jv].... )..
    0040 - 7d 45 2b 3b 56 3c 2e 4b-d3 69 60 c8 fb 67 36 07 }E+;V...;.]p......
    00a0 - de 09 7d bf 3f b9 2c 9c-af 5d b1 af b2 9b bc 7a ..}.?.,..].....z
    00b0 - 5e b3 92 26 02 3a 0e 47-c9 4b 10 6c 5b f4 2f c3 ^..&.:.GKl[./.

    시작 시간: 1380663897
    시간 초과 : 300(초)
    반환 코드 확인: 20(로컬 발급자 인증서를 가져올 수 없음)
---

(마지막 인증서) 인증서 2를 추가하겠습니다. 체인 인증서이고 인증서 2에 의해 체인 인증서로 승인되었으므로 인증서 1이 필요하지 않습니다. 그러나 인증서 1도 추가할 수 있으며 문제가 되지 않습니다.

답변2

누군가에게 도움이된다면 비슷한 문제가 있었고 약간 다르게 해결했습니다. 내 회사 프록시는 중간 자체 서명 인증서를 사용하고 있었습니다. 이는 내 가상 머신의 명령줄 프로그램뿐만 아니라 브라우저에서도 분명하게 나타났습니다. 브라우저(Chromiumim)에서 외부 사이트로 이동하면 사이트가 중간 자체 서명 인증서를 사용하고 있기 때문에 신뢰할 수 없다는 메시지를 보았습니다. URL 표시줄의 자물쇠 아이콘 영역을 클릭하면 중간 인증서를 다운로드할 수 있었습니다. 그런 다음 다음 지침을 따랐습니다. 수정 사항은 명령줄 프로그램 및 브라우저 등에 전역적으로 적용됩니다.

https://wiki.archlinux.org/title/User:Grawity/Adding_a_trusted_CA_certificate

관련 정보