2012-03-31 5 views
2

Ich habe Schwierigkeiten, eine Django/Python-Anwendung zu debuggen, die einen öffentlichen Schlüssel benötigt, um ein Zertifikat zu signieren. 1. habe ich einen Schlüssel im PEM-Format von meinem privaten Schlüsselkann öffentlichen Schlüssel nicht laden

mit dem folgenden Befehl
openssl rsa -pubout -in ~/.ssh/id_rsa > samplePEMKey.pub 

Der Schlüssel unter

-----BEGIN PUBLIC KEY----- 
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8K/LfOBi+QrINSseqWwc 
JGo4uE49Dc42zF2Jwbmc6iXIln8AWX5M+yn15dYOXzbHGbopH8bpF9CsJ/DPHg87 
D1At1XwAy5aR5w7pXE//5p/saW50Sm/eY6Nugs9hgAXUTcMMAEXCIG17dLoUzhwE 
YdzuPm350h39bTmI7Fz95koTbsKJUi+6337GJ3cWKxMBkEmWvpGo4Nko01xtEnUZ 
GweKexr1roE8jZPpzuNeUy+S5tvH5emyBIBdroBVxBtz1OUIoP0oAOrQ5RtRPAcT 
TsSWjMtyF2gO5GxeMErRqnLAtWJs4QlaJacVnMMTAgRjrGkUZdsqngM/fjQXfeZV 
SwIDAQAB 
-----END PUBLIC KEY----- 

In meiner Python App zu laden Ich bin mit OpenSSL und versuchen gegeben wird Taste mit

Beim Ausführen der Django-App bekomme ich den folgenden Fehler bei der obigen Zeile.

Request Method:  POST 
Request URL: http://127.0.0.1:8000/snapshotuploader/single/ 
Django Version:  1.3.1 
Exception Type:  Error 
Exception Value:  

[('PEM routines', 'PEM_read_bio', 'no start line')] 

Hier ist, wie ich die öffentlichen Schlüssel aus der Datei bei der Lösung dieses Problems keine Hilfe

file_path = '/home/XXXX/co/certserver/LicenseServer/home_folder/dldl/samplePEMKey.pub' 
try: 
    fin = open(file_path, 'r') 
except IOError: 
    return HttpResponse('IO Error opening uploaded file.') 
try: 
    samplePEMKey = fin.read() 
    fin.close() 
except IOError: 
    return HttpResponse('IO Error reading uploaded file.') 

Schätze lesen. Danke im Voraus.

+0

Mindestens 'Crypto.Cipher.RSA.importKey () 'arbeitet mit pycrypto-2.5 ​​mit dem Schlüssel, den Sie geliefert haben, also sollte nichts falsch mit dem Schlüssel selbst sein. Wie liest du den Schlüssel in 'samplePEMKey' Variable? – Kimvais

+0

file_path = '/home/XXXX/co/certserver/LicenseServer/home_folders/dldl/samplePEMKey.pub' \t Druck pubKeyFile try: fin = open (file_path, 'r') außer IOError: return Httpresponse ('IO Fehler beim Öffnen der hochgeladenen Datei.') Versuch: pubkey = fin.read() fin.close() außer IOError: return Httpresponse ('IO Fehler beim Lesen der Datei hochgeladen.') –

+0

bearbeiten Sie Ihre Frage um den entsprechenden Code hinzuzufügen - auch 'pubKey'! =' samplePEMKey' – Kimvais

Antwort

1

Es dauerte eine Weile, es zu erkennen, aber Sie versuchen, einen öffentlichen Schlüssel mit einem privaten-Key-Verfahren zu lesen. Wenn Sie load_privatekey verwenden möchten, sollten Sie das Original id_rsa als Eingabe verwenden.

Ich erinnere mich nicht, wie das gleiche zu tun mit OpenSSL.crypto, aber zumindest mit der RSA der pycrypto Toolkit Implementierung Ihrer Probe Schlüssel Importe ganz gut:

>>> kt = open("samplePEMKey.pub").read() 
>>> from Crypto.PublicKey import RSA 
>>> key = RSA.import_key(kt) 
>>> key 
<_RSAobj @0x109916d40 n(2048),e> 
+0

Ehrfürchtig. Vielen Dank. Ich möchte samplePEMKey verwenden, ein öffentlicher PEM-Schlüssel, der von id_rsa generiert wurde, um eine X509-Anfrage zu signieren. Ich möchte die öffentliche Beispieldatei von einer Zeichenfolge, die aus einer Datei gelesen wird, in ein Format konvertieren, in dem sie beim Signieren einer X509-Anforderung akzeptiert wird. Kannst du mich auf die Funktion hinweisen? –

+0

Ich muss OpenSSL.crypto verwenden –