Como faço para lidar com um proxy transparente baseado em certificado no Arch Linux?

Como faço para lidar com um proxy transparente baseado em certificado no Arch Linux?

Configurei uma VM Arch Linux no trabalho e minha empresa usa um proxy transparente (cut-through) com um certificado autoassinado e requer autenticação. Sempre que tento instalar qualquer pacote, pacmanrecebo o seguinte erro (por exemplo, ao tentar instalar lynx)

erro: falha ao recuperar o arquivo 'lynx-2.8.7-6-x86_64.pkg.tar.xz' de mirrors.kernel.org: problema de certificado SSL: certificado autoassinado na cadeia de certificados

Isso gerará esse erro para cada espelho que defini no arquivo /etc/pacman.d/mirrorlist. Tenho problemas semelhantes ao tentar usar qualquer outro cliente HTTP/S, como curl, mas não tenho problemas com FTP (principalmente porque minha empresa monitora apenas as portas 80 e 443).

O que eu já tentei...

  • Colocar o certificado CA autoassinado da minha empresa em /usr/share/ca-certificatese/etc/ca-certificates
  • Configurando http_proxye https_proxyapontando para o servidor proxy da minha empresa com minhas credenciais
  • Conversei com a pessoa que gerencia nosso servidor proxy, mas ele não sabe nada sobre Linux, então não tem ideia por onde começar.

Por enquanto, quando preciso instalar algo ou acessar a Internet, estou abrindo um túnel SSH no meu servidor doméstico para contornar isso.

Abaixo está a saída deopenssl s_client -CApath /etc/ca-certificates -showcerts -connect mirrors.kernel.org:443

CONECTADO(00000003)
profundidade = 0 C = EUA, ST = Califórnia, L = San Jose, O = The Linux Kernel Organization, CN = *.kernel.org
verifique o erro:num=20:não foi possível obter o certificado do emissor local
verificar retorno:1
profundidade = 0 C = EUA, ST = Califórnia, L = San Jose, O = The Linux Kernel Organization, CN = *.kernel.org
verifique o erro:num=27:certificado não confiável
verificar retorno:1
profundidade = 0 C = EUA, ST = Califórnia, L = San Jose, O = The Linux Kernel Organization, CN = *.kernel.org
verifique erro:num=21:não foi possível verificar o primeiro certificado
verificar retorno:1
---
Cadeia de certificados
 0 s:/C=US/ST=Califórnia/L=San Jose/O=The Linux Kernel Organization/CN=*.kernel.org
   i:/C=US/ST=MyCompanyState/L=MyCompanyCity/O=MyCompanyName/OU=IT/CN=MyCompanyProxyServer/[e-mail protegido]
-----INICIAR CERTIFICADO-----
... blá blá blá
-----FIM CERTIFICADO-----
---
Certificado de servidor
subject=/C=US/ST=Califórnia/L=San Jose/O=The Linux Kernel Organization/CN=*.kernel.org
emissor=/C=US/ST=MyCompanyState/L=MyCompanyCity/O=MyCompanyName/OU=IT/CN=MyCompanyProxyServer/[e-mail protegido]
---
Nenhum nome de CA de certificado de cliente enviado
---

ObservaçãoEu provavelmente poderia tentar simplesmente usar espelhos FTP, mas isso realmente não resolve o problema para outros aplicativos HTTP/S (por exemplo, curl).

Responder1

Pelas informações que você forneceu, parece que você adicionou o certificado do servidor ao seu /etc/ca-certificatesarquivo. Você precisa adicionar o certificado CA.

O openssl s_client -showcertscomando que você executou deveria ter incluído um ou mais certificados após o primeiro. Estes são aqueles com quem você se preocupa.
Se houver mais de um certificado após o primeiro, talvez seja necessário adicionar ambos ao seu ca-certificatesarquivo. Tudo depende de como a autoridade de certificação está configurada no proxy. No entanto, se ambos não forem necessários e você adicionar os dois de qualquer maneira, não fará mal.

No entanto, se o openssl s_client -showcertsnão mostrar nenhum certificado além do primeiro, você estará em apuros. Isso significa que o proxy não está enviando o certificado de assinatura. Você pode tentar entrar em contato com sua equipe de rede e solicitar isso. Em termos de segurança, não há absolutamente nenhuma razão para eles não fornecerem isso a você (é ochaveque deve ser protegido).


Por exemplo, recebo o seguinte (sim, como não estou atrás de um proxy SSL, recebo os certificados reais, mas o conceito permanece):

# openssl s_client -showcerts -connect mirrors.kernel.org:443
CONECTADO(00000003)
profundidade = 2 C = US, O = "thawte, Inc.", OU = Divisão de Serviços de Certificação, OU = "(c) 2006 thawte, Inc. - Somente para uso autorizado", CN = thawte CA raiz primária
verifique o erro:num=20:não foi possível obter o certificado do emissor local
verificar retorno:0
---
Cadeia de certificados
 0 s:/C=US/ST=Califórnia/L=San Jose/O=The Linux Kernel Organization/CN=*.kernel.org
   i:/C=EUA/O=Thawte, Inc./CN=Thawte SSL CA
-----INICIAR CERTIFICADO-----
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==
-----FIM CERTIFICADO-----
 1 s:/C=US/O=Thawte, Inc./CN=Thawte SSL CA
   i:/C=US/O=thawte, Inc./OU=Divisão de Serviços de Certificação/OU=(c) 2006 thawte, Inc. - Somente para uso autorizado/CN=thawte CA raiz primária
-----INICIAR CERTIFICADO-----
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=
-----FIM CERTIFICADO-----
 2 s:/C=US/O=thawte, Inc./OU=Divisão de Serviços de Certificação/OU=(c) 2006 thawte, Inc. - Somente para uso autorizado/CN=thawte CA raiz primária
   i:/C=ZA/ST=Western Cape/L=Cidade do Cabo/O=Thawte Consulting cc/OU=Divisão de Serviços de Certificação/CN=Thawte Premium Server CA/[e-mail protegido]
-----INICIAR CERTIFICADO-----
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/MA8GA1UdEwEB
/wQFMAMBAf8wOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHBz
Oi8vd3d3LnRoYXd0ZS5jb20vY3BzMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
e1tFz6/Oy3r9MZIaarbzRutXSFAwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cDovL2Ny
bC50aGF3dGUuY29tL1RoYXd0ZVByZW1pdW1TZXJ2ZXJDQS5jcmwwDQYJKoZIhvcN
AQEFBQADgYEAhKhMyT4qvJrizI8LsiV3xGGJiWNa1KMVQNT7Xj+0Q+pjFytrmXSe
Cajd1FYVLnp5MV9jllMbNNkV6k9tcMq+9oKp7dqFd8x2HGqBCiHYQZl/Xi6Cweiq
95OBBaqStB+3msAHF/XLxrRMDtdW3HEgdDjWdMbWj2uvi42gbCkLYeA=
-----FIM CERTIFICADO-----
---
Certificado de servidor
subject=/C=US/ST=Califórnia/L=San Jose/O=The Linux Kernel Organization/CN=*.kernel.org
emissor=/C=EUA/O=Thawte, Inc./CN=Thawte SSL CA
---
Nenhum nome de CA de certificado de cliente enviado
---
O handshake SSL leu 3566 bytes e gravou 636 bytes
---
Novo, TLSv1/SSLv3, a cifra é RC4-SHA
A chave pública do servidor é de 2.048 bits
A renegociação segura é suportada
Compressão: NENHUMA
Expansão: NENHUMA
Sessão SSL:
    Protocolo: TLSv1
    Cifra: RC4-SHA
    ID da sessão: EAB5C93513AA8829036C7BB9E3F74D99076C8A339EB220832F76DF73D52D0B22
    ID de sessão-ctx:
    Chave Mestra: 0A599E2D1CCAA8249E50871FDF03A2137BA034BCB20FA691D1413822BE08E15303CB0F59CDEC0376D670E08632EF0D46
    Chave-Arg: Nenhum
    Identidade PSK: Nenhuma
    Dica de identidade PSK: Nenhuma
    Nome de usuário SRP: Nenhum
    Bilhete de sessão 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[./.

    Hora de início: 1380663897
    Tempo limite: 300 (seg)
    Verifique o código de retorno: 20 (não é possível obter o certificado do emissor local)
---

Eu acrescentaria o certificado 2, o (último). Eu não precisaria do certificado 1, pois é um certificado de cadeia e está autorizado a ser um certificado de cadeia pelo certificado 2. No entanto, eu poderia adicionar o certificado 1 também e não faria mal.

Responder2

Caso ajude alguém, tive um problema semelhante e resolvi de forma um pouco diferente. Meu proxy corporativo estava usando certificados autoassinados intermediários. Isso não ficou evidente apenas nos programas de linha de comando em minha máquina virtual, mas também nos navegadores. Ao navegar para um site externo em um navegador (Chromiumim), vi a mensagem não confiável, pois o site estava usando o certificado intermediário auto-assinado. Clicando na área do ícone de cadeado na barra de URL, consegui baixar os certificados intermediários. Então apenas segui as seguintes instruções. A correção se aplica globalmente a programas de linha de comando e navegadores, etc.

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

informação relacionada