2010-11-10 6 views
7

Esiste un modo per un programma Python/Twisted di utilizzare in modo pulito l'elenco dei certificati radice utilizzati da Internet Explorer per convalidare una connessione SSL a un server HTTPS? Le risposte fornite a Validate SSL certificates with Python sono molto utili ma il codice di esempio ottiene i certificati di root leggendo la directory specifica di Unix /etc/ssl/certs/*.pem e non mi è chiaro quale sarebbe l'equivalente di Windows di questo.Qual è il modo giusto per un programma Python/Twisted per convalidare un certificato SSL in Windows?

risposta

3

L'equivalente di Windows è "copia /etc/ssl/certs/*.pem dal computer Linux". Mac e Windows hanno API native diverse per accedere ai rispettivi archivi certificati, che Twisted non supporta direttamente. Non usano i certificati OpenSSL in modo nativo, e certamente non mettono le cose in un layout semplice come "directory dei file PEM". Se riesci ad esportare le tue trust trust come PEM, puoi chiedere a Twisted (beh, davvero, OpenSSL tramite PyOpenSSL) per verificarlo in questo modo.

Sono astrattamente interessato a farlo in un modo super-portatile, ma non l'ho mai provato. Ecco alcuni link per iniziare: SecureTransport reference, Microsoft Cryptography Functions.

Nel riferimento SecureTransport, la documentazione indica che SSLGetTrustedRoots è deprecato ma non menziona l'alternativa SSLCopyTrustedRoots che non lo è. Questa è probabilmente l'API che vuoi iniziare con un Mac (tramite PyObjC). Su Windows, non sono davvero sicuro, tranne che in quel mucchio di funzioni ce ne è probabilmente uno che fa ciò che vorresti, e forse puoi chiamarlo con i ctype :).