2010-11-10 14 views
7

¿Hay alguna manera de que un programa Python/Twisted haga un uso limpio de la lista de certificados raíz que Internet Explorer usa para validar una conexión SSL a un servidor HTTPS? Las respuestas proporcionadas a Validate SSL certificates with Python son muy útiles, pero el código de ejemplo obtiene los certificados raíz al leer el directorio específico de Unix /etc/ssl/certs/*.pem y no me queda claro cuál sería el equivalente de Windows de este.¿Cuál es la forma correcta para que un programa Python/Twisted valide un certificado SSL en Windows?

Respuesta

3

El equivalente de Windows es "copiar /etc/ssl/certs/*.pem desde su máquina Linux". Mac y Windows tienen diferentes API nativas para acceder a sus respectivos almacenes de certificados, que Twisted no admite directamente. No usan certificados OpenSSL de forma nativa, y ciertamente no colocan las cosas en un diseño tan sencillo como 'directorio de archivos PEM'. Si puede exportar sus raíces de confianza como PEM, puede preguntar Twisted (bueno, realmente, OpenSSL a través de PyOpenSSL) para verificarlo de esa manera.

Estoy muy interesado en hacer esto de una manera súper portátil, pero en realidad nunca lo he intentado. Aquí hay algunos enlaces para comenzar: SecureTransport reference, Microsoft Cryptography Functions.

En la referencia de SecureTransport, la documentación señala que SSLGetTrustedRoots está en desuso, pero no menciona la alternativa SSLCopyTrustedRoots que no lo es. Esa es probablemente la API con la que quieres comenzar en una Mac (a través de PyObjC). En Windows, no estoy seguro, salvo que en algún lugar de ese montón de funciones probablemente haya uno que haga lo que le gustaría, y tal vez pueda llamarlo con los tipos :).

Cuestiones relacionadas