2011-01-17 2 views
0

Ich habe ein .pem-Zertifikat, dass ich ziemlich sicher bin, dass ich korrekt generierte, und es wird nicht von OpenSSL akzeptiert, wenn ich es in ein Rails 3.0.2-Modell einfügen. Was ich tue, ist dies:Richtige Methode zum Einfügen eines .pem-Zertifikats in OpenSSL/ein Schienenmodell?

open up the .pem file in Textmate 
select all and copy 
user.cert = <paste into model>; user.save 
OpenSSL::PKey::RSA.new(user.cert) 

Das gibt mir den Fehler:

Neither PUB key nor PRIV key:: 

Um zu testen, ich geladen nur in der Datei stattdessen keine Fehler:

OpenSSL::PKey::RSA.new(File.read("/path/to/cert.pem")) 

Ich dachte, vielleicht Es wäre ein Codierungsfehler oder ein Newline-Problem, ich hatte versucht, die Zeilenumbrüche ohne Erfolg zu entfernen.

+0

Beitrag der Schritte verwendet, um Sie das Zertifikat in erster Linie zu erstellen, um sicherzustellen, dass Ihr Zertifikat tatsächlich einen privaten Schlüssel enthält. – jer

+0

sieht für mich aus, als wäre es ein Kopier-und-Einfügen-Artefakt. vielleicht keine Zeilenumbrüche, aber eine andere Art von Abstandsproblemen. es ist schwer zu sagen, ohne es tatsächlich zu sehen. –

Antwort

0

Es war in der Tat ein komisches Exemplar und Paste Artefakt. Ich File.read's in das Modell statt kopieren einfügen und es hat gut funktioniert ...

0

Vielleicht spät dran, aber das ist die Antwort: Sie können einen öffentlichen Schlüssel in Ruby mit Copy/Paste einfügen, aber Beachten Sie, dass das, was Ihnen wie Formatierung erscheint, Leerraum in der Zeile ist - Sie müssen sicherstellen, dass die resultierende PEM-Zeichenfolge keine Leerzeichen enthält. Ich habe nur kopiert und eingefügt aus einer PEM-Datei in Ruby-Code, und es hat nicht funktioniert, bis ich die zusätzlichen Leerzeichen entfernt, die Text-Mate oder was auch immer zu den Zeilen hinzugefügt.

Hart hier zeigen:

SQS_PUBLIC_KEY = „----- PUBLIC KEY BEGIN ----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs3VeTxEgLQLL11UN2G6c oQsc0LbpoEs4VTmu0S4XU82N4h/25XX5k4t5oTJ0JGGSBP4/gzTwz15vS5mrlnsG MISSINGLINES rMV5ZCXToG0VCNPEHpZQnUHMCg/nF9jnk9i1ZZHv2dpYYG7GHMUPG3rtcTWJvZxI 3wIDAQAB ---- -END PUBLIC KEY -----“(us-ascii ")

SQS_PUBLIC_KEY = "-----BEGIN PUBLIC KEY----- 
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs3VeTxEgLQLL11UN2G6c 
    oQsc0LbpoEs4VTmu0S4XU82N4h/25XX5k4t5oTJ0JGGSBP4/gzTwz15vS5mrlnsG 
    MISSINGLINES 
    rMV5ZCXToG0VCNPEHpZQnUHMCg/nF9jnk9i1ZZHv2dpYYG7GHMUPG3rtcTWJvZxI 
    3wIDAQAB 
    -----END PUBLIC KEY-----".force_encoding("us-ascii") 

dh force_encoding." - nicht die zweite - Ruby fügt Leerzeichen am Anfang jeder Zeile hinzu, und die RSA-Tools ignorieren Leerzeichen nicht - sie scheinen nur Zeilenumbrüche zu ignorieren.

Ich benutze die Kopie/eingefügt Schlüssel als Fallback - mit anderen Worten, wenn eine ENV eingestellt ist, verwende ich das, sonst verwenden Sie den eingefügten öffentlichen Schlüssel.

--Tom

Verwandte Themen