Come posso convalidare l'autenticità dei certificati SSL quando si usa Blue Coat?

3

Lavoro per una grande azienda che utilizza Blue Coat come server proxy. Ciò fa sì che il server proxy intercetti tutto il traffico SSL, quindi emette nuovamente un nuovo certificato per il browser dal server stesso.

Il problema che sto affrontando è che ogni volta che gli strumenti di sviluppo scaricano risorse tramite SSL, ogni certificato fallisce la convalida. Sospetto che ciò sia causato dal nostro proxy Blue Coat. Gli strumenti in questione sono pip (Python's package manager) e npm (Node's package manager). Fortunatamente per me entrambi accettano un certificato client in formato PEM.

La mia attuale soluzione indesiderata è disabilitare SSL su tutta la linea.

Che cosa devo specificamente chiedere al mio dipartimento IT per convalidare i certificati di terze parti in questa istanza?

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
    
posta onetwothree 27.11.2015 - 16:01
fonte

3 risposte

3

Bluecoat e altri firewall utilizzano l'intercettazione SSL per analizzare il traffico HTTPS anche per il malware. Per fare questo creano una connessione HTTPS tra il firewall e il server e una nuova connessione HTTPS tra il client e il firewall. Naturalmente questa nuova connessione non può avere il certificato originale del server, dal momento che il firewall non ha accesso alla chiave privata del server. Ciò significa che il firewall creerà un nuovo certificato firmato da una CA al firewall.

Per convalidare questo nuovo certificato il client deve fidarsi della CA proxy del firewall. Di solito questo viene fatto aggiungendo questa CA come affidabile a tutti i computer all'interno dell'azienda. Tuttavia, diverse applicazioni utilizzano diversi trust store e questo certificato viene solitamente aggiunto solo al trust store specifico del sistema operativo, il che significa che solo in Windows IE e Chrome si affideranno automaticamente alla CA proxy. Per qualsiasi altra applicazione è necessario aggiungere esplicitamente la CA come attendibile. Il modo in cui questo viene fatto dipende dall'applicazione, ma per i pip potresti trovare aiuto su questa domanda .

    
risposta data 27.11.2015 - 20:17
fonte
3

How can I validate the authenticity of SSL certificates when company uses Blue Coat?

Non puoi. Blue Coat lo mangia e lo sostituisce con uno di loro.

Potresti provare a chiedere ai tuoi amministratori di implementare la regola proxy che esclude https://pypi.python.org dall'ispezione.

    
risposta data 27.11.2015 - 21:40
fonte
3

BlueCoat funziona nei browser desktop della tua azienda perché il tuo reparto IT ha caricato un certificato di autorità radice affidabile negli archivi certificati dei sistemi (con Windows che viene comunemente eseguito tramite Criteri di gruppo). Questo certificato è quello che convalida i certificati di BlueCoat sono affidabili , che consente di navigare su siti https senza visualizzare un avviso di 'cattivo certificato'.

Il programma di installazione di Python non appare nell'archivio certificati di sistema. Ha una propria lista di certificati. Quello che devi fare è dire a pip di fidarsi anche del certificato di root della tua azienda.

Ottieni una copia del certificato radice BlueCoat della tua azienda. Un modo per scoprirlo è vedere se la tua azienda ha un link speciale per "installare questo certificato in Firefox"; quel link dovrebbe puntare al certificato esatto di cui hai bisogno. Scarica una copia sul tuo computer, quindi impostala nel tuo file di configurazione del pip $HOME/.pip/pip.conf in questo modo:

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

Scusa se non ho informazioni sulla configurazione di npm per fidarsi di un certificato aggiuntivo; controlla i documenti.

    
risposta data 27.11.2015 - 23:54
fonte

Leggi altre domande sui tag