Crea certificato OpenSSL per superare l'errore di convalida del certificato SSLError Python

1

Ho un'applicazione client / server in cui il server utilizza il protocollo HTTPS e ha indirizzo e porta localhost:44301 .

L'applicazione client utilizza Python 2.7.13 sulla piattaforma Windows per connettersi al server. Questo è il codice snippet:

import platform, os
import requests, json, certifi, urllib3

def main():

my_c_folder = os.path.dirname('C:\Users\Admin\Desktop\cert')
my_pem = os.path.join('C:\Users\Admin\Desktop\cert', 'ce-lh.pem')
my_crt = os.path.join('C:\Users\Admin\Desktop\cert', 'ce-lh.crt')
my_key = os.path.join('C:\Users\Admin\Desktop\cert', 'ce.key')

http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED',ca_certs=my_crt)

h = http.request('GET','https://localhost:44301/api/myData',auth=('myUser', 'myPass'))
print h
r = requests.get('https://localhost:44301/api/myData',auth=('myUser', 'myPass'),  verify=my_crt)
print r


if __name__ == "__main__": 
    main()

Entrambi i link e richieste falliscono la chiamata restituendo questo errore

raise SSLError(e)
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)

Con OpenSSL (versione 1.0.2k) ho precedentemente creato il certificato in questo modo:

  1. Genera RSA: openssl genrsa -aes256 -out ce.key 2048 -config c:\Program Files\OpenSSL-Win 64\bin\openssl.cfg
  2. Crea la richiesta di firma del certificato: openssl req -new -key ce.key -out ce.csr
    Utilizzando questo parametro: Nome comune (ad esempio nome FQDN del server o TUO) []: localhost *
  3. Crea il certificato: openssl x509 -req -days 365 -in ce.csr -signkey ce.key -out ce.crt
  4. Esporta in formato pem: openssl x509 -in ce.crt -out ce.pem -outform PEM

Dove mi sbaglio? Come superare l'errore del certificato? (So che posso disabilitare per verificare il certificato ma non è il bersaglio.)

Si tratta di un errore di implementazione Python? O ho usato OpenSSL con comandi errati? O che altro? Grazie in anticipo

    
posta Cyr 22.03.2017 - 12:55
fonte

0 risposte

Leggi altre domande sui tag