2012-08-16 2 views
18

Ich baue eine Server-App in C++, die ein Zertifikat mit einem öffentlichen ECDSA-Schlüssel akzeptieren muss. Er muss das Zertifikat validieren und bei der Verifizierung den öffentlichen Schlüssel verwenden, der im Zertifikat enthalten ist, um eine mit dem Zertifikat gesendete Nachricht zu authentifizieren. Ich habe das alles mit ECSDA-Schlüsselpaaren, die bei der Grippe generiert wurden - d. H. Mein Code funktioniert gut - aber jetzt muss ich das Zertifikatstück machen. Und ich dachte, ich könnte die OpenSSL-Befehlszeile verwenden, um das Zertifikat zu erstellen, das auf dem Client installiert ist (zusammen mit dem privaten ECDSA-Schlüssel in einer separaten Datei).Wie erstelle ich ein ECDSA-Zertifikat mit der OpenSSL-Befehlszeile

Kann jemand helfen?

Vielen Dank.

Antwort

28

Wenn Sie eine Kurve nicht gewählt haben, können Sie sie mit diesem Befehl auflisten:

openssl ecparam -list_curves 

ich sect571r1 für dieses Beispiel ausgewählt. Verwenden Sie diese Option, um einen privaten EC-Schlüssel zu generieren, wenn Sie noch keinen haben:

Und dann generieren Sie das Zertifikat. Ihr Zertifikat wird in cert.pem sein.

openssl req -new -key ec_key.pem -x509 -nodes -days 365 -out cert.pem 

Siehe auch: req, ecparam

+2

'secp256k1' ist wahrscheinlich die Interoperabilität im Moment. – jww

+8

Ich denke du meinst 'secp256r1'. Laut [diesem Beitrag] (http://openssl.6102.n7.nabble.com/P-256-curve-not-supported-in-openssl-1-0-1-tp5379p5380.html) wird es als bezeichnet 'prime256v1' in OpenSSL. – oliverdm