Verificación de certificado SSL: requests de Python

Requests verifica los certificados SSL para requests HTTPS, al igual que un navegador web. Los certificados SSL son pequeños archivos de datos que vinculan digitalmente una clave criptográfica a los detalles de una organización. A menudo, un sitio web con un certificado SSL se denomina sitio web seguro. De manera predeterminada, la verificación SSL está habilitada y las requests generarán un SSLError si no puede verificar el certificado.

Deshabilitar la verificación del certificado SSL

Intentemos acceder a un sitio web con un certificado SSL no válido, utilizando requests de Python 

Python3

# import requests module
import requests
 
# Making a get request
response = requests.get('https://expired.badssl.com/')
 
# print request object
print(response)

Producción :- 
 

ssl-certificate-verification-python-requests

Este sitio web no tiene configuración SSL, por lo que genera este error.
Para deshabilitar la verificación de certificados, en el lado del cliente, se puede usar el atributo de verificación .  

Python3

# import requests module
import requests
 
# Making a get request
response = requests.get('https://expired.badssl.com/', verify = False)
 
# print request object
print(response)

Producción 

ssl-certificate-verification-python-requests-1

Dado que se imprime la respuesta de salida 200, podemos suponer que la solicitud fue exitosa.  

Verificación SSL manual

también se puede pasar el enlace al certificado para su validación solo a través de requests de python.  

Python3

# import requests module
import requests
 
# Making a get request
response = requests.get('https://github.com', verify ='/path / to / certfile')
 
# print request object
print(response)

Esto funcionaría en caso de que la ruta proporcionada sea correcta para el certificado SSL para github.com. 

Certificados del lado del cliente

También puede especificar un certificado local para usarlo como certificado del lado del cliente, como un solo archivo (que contiene la clave privada y el certificado) o como una tupla de las rutas de ambos archivos: 

>>> requests.get('https://kennethreitz.org', cert=('/path/client.cert', '/path/client.key'))

o persistente:  

s = requests.Session()
s.cert = '/path/client.cert'

Si especifica una ruta incorrecta o un certificado no válido, obtendrá un SSLError: 

>>> requests.get('https://kennethreitz.org', cert='/wrong_path/client.pem')
SSLError: [Errno 336265225] _ssl.c:347: error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib

Publicación traducida automáticamente

Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *