¿Cómo puedo validar la autenticidad de los certificados SSL cuando se usa Blue Coat?

3

Trabajo para una gran corporación que utiliza Blue Coat como servidor proxy. Esto hace que el servidor proxy intercepte todo el tráfico SSL, y luego vuelve a emitir un nuevo certificado al navegador desde el propio servidor.

El problema al que me enfrento es que cada vez que las herramientas de desarrollador descargan recursos a través de SSL, todos los certificados fallan en la validación. Sospecho que esto es causado por nuestro proxy de Blue Coat. Las herramientas en cuestión son pip (administrador de paquetes de Python) y npm (administrador de paquetes de Node). Por suerte para mí, ambos aceptan un certificado de cliente en formato PEM.

Mi solución actual no deseada es deshabilitar SSL en todos los ámbitos.

¿Qué debo solicitar específicamente a mi departamento de TI para validar certificados de terceros en este caso?

PS C:\dev> pip install e -v
Collecting e
  Getting page https://pypi.python.org/simple/e/
  Starting new HTTPS connection (1): pypi.python.org
  Could not fetch URL https://pypi.python.org/simple/e/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certific
verify failed (_ssl.c:600) - skipping
  1 location(s) to search for versions of e:
  * https://pypi.python.org/simple/e/
  Getting page https://pypi.python.org/simple/e/
  Starting new HTTPS connection (2): pypi.python.org
  Could not fetch URL https://pypi.python.org/simple/e/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certific
verify failed (_ssl.c:600) - skipping
  Could not find a version that satisfies the requirement e (from versions: )
Cleaning up...
No matching distribution found for e
Exception information:
Traceback (most recent call last):
  File "c:\dev\pypi\lib\site-packages\pip\basecommand.py", line 211, in main
    status = self.run(options, args)
  File "c:\dev\pypi\lib\site-packages\pip\commands\install.py", line 305, in run
    wb.build(autobuilding=True)
  File "c:\dev\pypi\lib\site-packages\pip\wheel.py", line 705, in build
    self.requirement_set.prepare_files(self.finder)
  File "c:\dev\pypi\lib\site-packages\pip\req\req_set.py", line 334, in prepare_files
    functools.partial(self._prepare_file, finder))
  File "c:\dev\pypi\lib\site-packages\pip\req\req_set.py", line 321, in _walk_req_to_install
    more_reqs = handler(req_to_install)
  File "c:\dev\pypi\lib\site-packages\pip\req\req_set.py", line 461, in _prepare_file
    req_to_install.populate_link(finder, self.upgrade)
  File "c:\dev\pypi\lib\site-packages\pip\req\req_install.py", line 250, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "c:\dev\pypi\lib\site-packages\pip\index.py", line 571, in find_requirement
    'No matching distribution found for %s' % req
pip.exceptions.DistributionNotFound: No matching distribution found for e
    
pregunta onetwothree 27.11.2015 - 16:01
fuente

3 respuestas

3

Bluecoat y otros firewalls hacen la intercepción SSL para analizar el tráfico HTTPS en busca de malware también. Para hacer esto, crean una conexión HTTPS entre el firewall y el servidor y una nueva conexión HTTPS entre el cliente y el firewall. Por supuesto, esta nueva conexión no puede tener el certificado original del servidor, ya que el firewall no tiene acceso a la clave privada del servidor. Esto significa que el firewall creará un nuevo certificado firmado por una CA en el firewall.

Para validar este nuevo certificado, el cliente debe confiar en la CA proxy del firewall. Por lo general, esto se hace agregando esta CA como confiable a todas las computadoras dentro de la compañía. Sin embargo, diferentes aplicaciones utilizan diferentes almacenes de confianza y este certificado generalmente solo se agrega al almacén de confianza específico del sistema operativo, lo que significa que en Windows solo IE y Chrome confiarán automáticamente en la CA proxy. Para cualquier otra aplicación, debe agregar explícitamente la CA como de confianza. Cómo se hace esto depende de la aplicación, pero para pip puede encontrar ayuda en esta pregunta .

    
respondido por el Steffen Ullrich 27.11.2015 - 20:17
fuente
3
  

¿Cómo puedo validar la autenticidad de los certificados SSL cuando la empresa usa Blue Coat?

No puedes. Blue Coat lo come y lo reemplaza con uno de los suyos.

Puede intentar pedir a sus administradores que implementen una regla de proxy que excluya https://pypi.python.org de la inspección.

    
respondido por el StackzOfZtuff 27.11.2015 - 21:40
fuente
3

BlueCoat funciona en los navegadores de escritorio de su empresa porque su departamento de TI ha cargado un certificado adicional de Trusted Root Authority en sus almacenes de certificados de sistemas (en el caso de Windows, lo que comúnmente se hace a través de la Política de grupo). , lo que le permite navegar a sitios https sin ver una advertencia de "certificado incorrecto".

El instalador de Python no se ve en el almacén de certificados del sistema. Tiene su propia lista de certificados. Lo que debe hacer es decirle a pip que confíe en el certificado raíz de su empresa también.

Obtenga una copia del certificado raíz de BlueCoat de su empresa. Una forma de encontrarlo es ver si su empresa tiene un enlace especial para "instalar este certificado en Firefox"; ese enlace debe apuntar al certificado exacto que necesita. Descargue una copia a su máquina, luego configúrela en su archivo de configuración de pip $HOME/.pip/pip.conf así:

[global]
cert = /usr/local/share/ca-certificate/bluecoat_proxy.crt

Lo siento, no tengo información sobre la configuración de npm para confiar en un certificado adicional; Revisa los documentos.

    
respondido por el John Deters 27.11.2015 - 23:54
fuente

Lea otras preguntas en las etiquetas