Dabei SSL-client-Authentifizierung python

OK, ich bin versucht, client-Zertifikate zur Authentifizierung eines python-client auf einem Nginx server. Hier ist, was ich bisher ausprobiert:

Erstellt eine lokale ZERTIFIZIERUNGSSTELLE

openssl genrsa -des3 -out ca.key 4096 
openssl req -new-x509 -days 365-key der ca.Schlüssel -out ca.crt 

Erstellte server-Schlüssel und das Zertifikat

openssl genrsa -des3 -out server.key 1024 
openssl rsa -in server.key -out server.Schlüssel 
openssl req -new-key server.key -out server.csr 
openssl x509 -req -days 365 -in server.csr -CA CA.crt -CAkey ca.key -set_serial 01 -out server.crt 

Verwendet eine ähnliche Vorgehensweise zum erstellen eines client-key und Zertifikat

openssl genrsa -des3 -out client.key 1024 
openssl rsa -in client.key -out client.Schlüssel 
openssl req -new-key client.key -out client.csr 
openssl x509 -req -days 365 -in-client.csr -CA CA.crt -CAkey ca.key -set_serial 01 -out client.crt 

Fügen Sie diese Zeilen, um meine nginx config

server { 
listen 443; 
ssl auf; 
server_name dev.lightcloud.com; 
keepalive_timeout 70; 

access_log /usr/local/var/log/nginx/lightcloud.- Zugang.melden Sie; 
error_log /usr/local/var/log/nginx/lightcloud.Fehler.melden Sie; 

ssl_certificate /Users/wombat/Lightcloud-Web/ssl/server.crt; 
ssl_certificate_key /Users/wombat/Lightcloud-Web/ssl/server.Schlüssel; 
ssl_client_certificate /Users/wombat/Lightcloud-Web/ssl/ca.crt; 
ssl_verify_client auf; 

location /{ 
uwsgi_pass unix:///tmp/uwsgi.Buchse; 
gehören uwsgi_params; 
} 
} 

erstellt eine PEM client-Datei

cat client.crt client.Schlüssel ca.crt - > client.pem -

erstellt eine test-python-Skript

import ssl 
import http.client 

Kontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23) 
Kontext.load_verify_locations("ca.crt") 
Kontext.load_cert_chain("client.pem") 

conn = http.client.HTTPSConnection("localhost", context=Kontext) 
conn.set_debuglevel(3) 

conn.putrequest('GET', '/') 
conn.endheaders() 
Antwort = conn.getresponse() 
print(response.read()) 

Und jetzt bekomme ich 400 Die SSL-Zertifikat-Fehler vom server. Was mache ich falsch?

  • Es sieht aus wie mein problem vielleicht selbst-signiertes Zertifikat. Sieht aus wie die einzigen Optionen für die client-überprüfung, dass nginx unterstützt ist entweder voll-auf denen scheitert an sich selbst-signiert und optional_no_ca, die es clients ermöglicht, auch wenn keine Bescheinigung vorgelegt wird. Gibt es eine Möglichkeit zu machen, nginx, benötigen ein gültiges client-Zertifikat ohne überprüfung auf Vertrauenswürdige CA? Oder ist es Vertrauen in meine lokale ZERTIFIZIERUNGSSTELLE?
InformationsquelleAutor Mad Wombat | 2015-11-03
Schreibe einen Kommentar