2016-09-28 5 views
3

Ich habe Schwierigkeiten beim Austausch von privaten Schlüsseln zwischen einem Client mit Java Bouncycastle und einem Schlüsselserver mit Python RSA-Bibliotheken. Das PEM-Format wird verwendet, um die Schlüssel über REST zu übertragen. Die Keyserver kann den Schlüssel (erforderlich, wenn die Verschlüsselung Kennwortänderungen) Ich bin Versorgung nicht entschlüsseln, eine PKCS # 1 oder PKCS # 8-Schlüssel mit einer PEM rechnet wie folgt:Bouncycastle verschlüsselten privaten Schlüssel PEM-Ausgabe: RSA PRIVATE KEY vs PRIVATE KEY

-----BEGIN PRIVATE KEY----- 
Proc-Type: 4,ENCRYPTED 
DEK-Info: DES-EDE3-CBC,ACCB65DDEB20F5AB 

EcU3fekuLeUc0viPJ20vAG+Jg1Igkvm+JTjnLmMBE6SwDS/hkf3KP0bFto7Pv6fJ 

Aber bouncycastle der Ausgang hat JcePEMEncryptorBuilder und JcaMiscPEMGenerator mit verschiedenen leicht Zeichenfolge BEGIN:

-----BEGIN RSA PRIVATE KEY----- 
Proc-Type: 4,ENCRYPTED 
DEK-Info: DES-EDE3-CBC,ACCB65DDEB20F5AB 

EcU3fekuLeUc0viPJ20vAG+Jg1Igkvm+JTjnLmMBE6SwDS/hkf3KP0bFto7Pv6fJ 

Als ich einige der Forschung getan hat, habe ich gelernt, dass eine PEM-RSA PRIVATE KEY BEGIN Start der Schlüssel anzeigt, codierte PKCS # 1 verwendet wird.

Wenn ich versuche, eine PKCS # 8 verschlüsselt Ausgabe zu erhalten mit JceOpenSSLPKCS8EncryptorBuilder und JcaPKCS8Generator erhalte ich eine PEM wie folgt:

-----BEGIN ENCRYPTED PRIVATE KEY----- 
MIICrjAoBgoqhkiG9w0BDAEDMBoEFP+MLFFaKGC6J/37jF7wRgL3coZdAgIIAASC 
AoAdWVo4kAQ1S0stQZbzca7wL876nzlKfcOa4BKsCttPnFVPugJOvGDnATgUK5P/ 

Also meine Frage ist: Gibt es eine Möglichkeit bouncycastle zur Ausgabe eines PEM zu bekommen ein verschlüsselter privater Schlüssel in Form von BEGIN PRIVATE KEY oder erwartet die Python-Bibliothek das falsche Format?

Nebenbei kann ich nicht herausfinden, ob Bouncycletle PKCS # 1 oder PKCS # 8 im JcePEMEncryptorBuilder verwendet. Es verwendet PrivateKeyInfo # getEncoded, aber die Dokumentation ist nicht klar über das PKCS-Format.

BouncyCastle Version: bcpkix-jdk15on 1,52

+0

Ich würde sagen, dass die Python-lib nicht den richtigen Header für einen PKCS # 1-Format RSA-Schlüssel erwartet. Wenn Sie den "RSA" aus dem BC entfernen, wird der Server dann akzeptieren? –

+0

Ich habe das tatsächlich ohne Glück versucht;) –

Antwort

0

Es stellte mir der Python lib out nicht korrekt alle gängigen Formate der Handhabung, so dass wir reparierten es durch einen anderen Python lib verwenden, die das Format BouncyCastle unterstützt sendet.

Verwandte Themen