¿Cómo trato con un proxy transparente basado en certificado en Arch Linux?

¿Cómo trato con un proxy transparente basado en certificado en Arch Linux?

He configurado una máquina virtual Arch Linux en el trabajo y mi empresa utiliza un proxy transparente (transparente) con un certificado autofirmado y requiere autenticación. Cada vez que intento instalar algún paquete, pacmanaparece el siguiente error (por ejemplo, al intentar instalarlo lynx)

error: error al recuperar el archivo 'lynx-2.8.7-6-x86_64.pkg.tar.xz' de mirrors.kernel.org: problema con el certificado SSL: certificado autofirmado en la cadena de certificados

Lanzará este error para cada espejo que haya definido /etc/pacman.d/mirrorlist. Tengo problemas similares al intentar utilizar otros clientes HTTP/S como curl, pero no tengo ningún problema con FTP (principalmente porque mi empresa solo monitorea los puertos 80 y 443).

Lo que ya he probado...

  • Colocar el certificado de CA autofirmado de mi empresa /usr/share/ca-certificatesy/etc/ca-certificates
  • Configurar http_proxyy https_proxyapuntar al servidor proxy de mi empresa con mis credenciales
  • Hablé con la persona que administra nuestro servidor proxy, pero no sabe nada sobre Linux, por lo que no tiene idea de por dónde empezar.

Por ahora, cuando necesito instalar algo o acceder a Internet, abro un túnel SSH en mi servidor doméstico para solucionar este problema.

A continuación se muestra la salida deopenssl s_client -CApath /etc/ca-certificates -showcerts -connect mirrors.kernel.org:443

CONECTADO(00000003)
profundidad = 0 C = EE. UU., ST = California, L = San José, O = La organización del kernel de Linux, CN = *.kernel.org
error de verificación: num=20: no se puede obtener el certificado del emisor local
verificar devolución:1
profundidad = 0 C = EE. UU., ST = California, L = San José, O = La organización del kernel de Linux, CN = *.kernel.org
verificar error:num=27:certificado no confiable
verificar devolución:1
profundidad = 0 C = EE. UU., ST = California, L = San José, O = La organización del kernel de Linux, CN = *.kernel.org
error de verificación:num=21:no se puede verificar el primer certificado
verificar devolución:1
---
cadena de certificados
 0 s:/C=US/ST=California/L=San José/O=La Organización del Kernel de Linux/CN=*.kernel.org
   i:/C=US/ST=MiEmpresaEstado/L=MiEmpresaCiudad/O=MiEmpresaNombre/OU=IT/CN=MiEmpresaProxyServer/[correo electrónico protegido]
-----INICIAR CERTIFICADO-----
... bla, bla, bla
-----CERTIFICADO FINAL-----
---
Certificado de servidor
sujeto=/C=US/ST=California/L=San José/O=La Organización del Kernel de Linux/CN=*.kernel.org
emisor=/C=US/ST=MiEmpresaEstado/L=MiEmpresaCiudad/O=MiEmpresaNombre/OU=IT/CN=MiEmpresaProxyServer/[correo electrónico protegido]
---
No se han enviado nombres de CA de certificados de cliente
---

NotaProbablemente podría intentar usar simplemente espejos FTP, pero eso realmente no resuelve el problema para otras aplicaciones HTTP/S (por ejemplo curl).

Respuesta1

Según la información que proporcionó, parece que agregó el certificado del servidor a su /etc/ca-certificatesarchivo. En su lugar, debe agregar el certificado de CA.

El openssl s_client -showcertscomando que ejecutó debería haber incluido uno o más certificados después del primero. Estos son los que te importan.
Si hay más de un certificado después del primero, es posible que deba agregar ambos a su ca-certificatesarchivo. Todo depende de cómo esté configurada la autoridad de certificación en el proxy. Sin embargo, si ambos no son necesarios y los agrega de todos modos, no hará daño.

Sin embargo, si openssl s_client -showcertsno muestra ningún certificado aparte del primero, estás en un aprieto. Significa que el proxy no envía el certificado de firma. Puede intentar ponerse en contacto con su equipo de red y pedírselo. En cuanto a la seguridad, no hay absolutamente ninguna razón para que no te lo entreguen (es elllaveque hay que proteger).


Por ejemplo, obtengo lo siguiente (sí, como no estoy detrás de un proxy SSL, obtengo los certificados reales, pero el concepto permanece):

# openssl s_client -showcerts -connect mirrors.kernel.org:443
CONECTADO(00000003)
profundidad = 2 C = EE. UU., O = "thawte, Inc.", OU = División de Servicios de Certificación, OU = "(c) 2006 thawte, Inc. - Sólo para uso autorizado", CN = CA raíz primaria de thawte
error de verificación: num=20: no se puede obtener el certificado del emisor local
verificar devolución:0
---
cadena de certificados
 0 s:/C=US/ST=California/L=San José/O=La Organización del Kernel de Linux/CN=*.kernel.org
   i:/C=US/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==
-----CERTIFICADO FINAL-----
 1 s:/C=US/O=Thawte, Inc./CN=Thawte SSL CA
   i:/C=US/O=thawte, Inc./OU=División de Servicios de Certificación/OU=(c) 2006 thawte, Inc. - Sólo para uso autorizado/CN=thawte CA raíz primaria
-----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+M5es
S+Uv+yV9Lwdh+m+DdExMU3IgpHrPUVFWgYiwbR82LMgrsYiZwf5Eq0hRfNjyRGQq
2HGn+xov+RmNNLIjv8RMVR2OROiqXZrdn/0Dx7okQ40tR0Tb9tiYyLL52u/tKVxp
EvrRI5YPv5wN8nlFUzeaVi/oVxBw9u6JDEmJmsEj9cIqzEHPIqtlbreUgm0vQF9Y
3uuVK6ZyaFIZkSqudZ1OkubK3lTqGKslPOZkpnkfJn1h7X3S5XFV2JMXfBQ4MDzf
huNMrUnjl1nOG5srztxl1Asoa06ERlFE9zMILViXIa4=
-----CERTIFICADO FINAL-----
 2 s:/C=US/O=thawte, Inc./OU=División de Servicios de Certificación/OU=(c) 2006 thawte, Inc. - Sólo para uso autorizado/CN=thawte CA raíz primaria
   i:/C=ZA/ST=Cabo Occidental/L=Ciudad del Cabo/O=Thawte Consulting cc/OU=División de Servicios de Certificación/CN=Thawte Premium Server CA/[correo electrónico 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=
-----CERTIFICADO FINAL-----
---
Certificado de servidor
sujeto=/C=US/ST=California/L=San José/O=La Organización del Kernel de Linux/CN=*.kernel.org
emisor=/C=US/O=Thawte, Inc./CN=Thawte SSL CA
---
No se han enviado nombres de CA de certificados de cliente
---
El protocolo de enlace SSL ha leído 3566 bytes y escrito 636 bytes
---
Nuevo, TLSv1/SSLv3, el cifrado es RC4-SHA
La clave pública del servidor es de 2048 bits.
Se admite la renegociación segura
Compresión: NINGUNO
Expansión: NINGUNA
Sesión SSL:
    Protocolo: TLSv1
    Cifrado: RC4-SHA
    ID de sesión: EAB5C93513AA8829036C7BB9E3F74D99076C8A339EB220832F76DF73D52D0B22
    ID de sesión-ctx:
    Llave maestra: 0A599E2D1CCAA8249E50871FDF03A2137BA034BCB20FA691D1413822BE08E15303CB0F59CDEC0376D670E08632EF0D46
    Arg clave: Ninguno
    Identidad PSK: Ninguna
    Pista de identidad PSK: Ninguna
    Nombre de usuario SRP: Ninguno
    Boleto de sesión 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 inicio: 1380663897
    Tiempo de espera: 300 (seg)
    Verificar código de retorno: 20 (no se puede obtener el certificado del emisor local)
---

Yo agregaría el certificado 2, el (último). No necesitaría el certificado 1 ya que es un certificado en cadena y está autorizado a ser un certificado en cadena mediante el certificado 2. Sin embargo, también podría agregar el certificado 1 y no estaría de más.

Respuesta2

Por si le sirve a alguien, tuve un problema similar y lo resolví de forma ligeramente diferente. Mi proxy corporativo utilizaba certificados intermedios autofirmados. Esto no sólo fue evidente en los programas de línea de comandos de mi máquina virtual sino también en los navegadores. Al navegar a un sitio externo en un navegador (Chromiumim), vi el mensaje de no confiable ya que el sitio estaba usando el certificado autofirmado intermedio. Al hacer clic en el área del icono de candado en la barra de URL, pude descargar los certificados intermedios. Luego simplemente seguí las siguientes instrucciones. La solución se aplica globalmente a programas de línea de comandos y navegadores, etc.

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

información relacionada