Schlüssel-Generierung Anforderungen für die TLS-ECDHE-ECDSA-AES128-GCM-SHA256
Ich Frage mich, ob es minimum-key-generation-Anforderungen für ECDHE-ECDSA-AES128-GCM-SHA256-und ECDHE-ECDSA-AES128-GCM-SHA256? Ich werde versuchen, eine TLS-client-und-server mit einer der oben genannten algorithmen miteinander zu verbinden und immer wieder erhalten 'keine gemeinsame cipher-Fehler". Erstellt habe ich eine CA für die Signierung von client-und server-certs, und versucht, den Anschluss mit nur openssl und auch in node.js. Ich bin mit den cliengt und server auf localhost (127.0.0.1) zu beseitigen alle anderen möglichen Probleme.
Hier ist, was ich bisher getan habe:
CA-Schlüsselpaar-Erzeugung:
$ openssl genrsa -out ca-key.pem 4096
$ openssl req -new -x509 -days 365 -key ca-key.pem -out ca-cert.pem
Client - /Server-Schlüsselpaar-Erzeugung:
$ openssl genrsa -out server-key.pem 4096
$ openssl req -new -key server-key.pem -out server-csr.pem
$ openssl x509 -req -days 365 -in server-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
$ openssl genrsa -out client-key.pem 4096
$ openssl req -new -key client-key.pem -out client-csr.pem
$ openssl x509 -req -days 365 -in client-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -set_serial 02 -out client-cert.pem
War ich ursprünglich versucht, eine Verbindung zu einem node.js server von der Befehlszeile aus (tls.createServer() mit den Optionen: - Verschlüsselungen: 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256'), sondern zu eliminieren Knoten Verdacht fiel ich zurück zu openssl für die client-und server-Erstellung.
Den folgenden Kommandos eine korrekte Verbindung für client und server und Staaten ist es, mithilfe einer Chiffre von "New, TLSv1/SSLv3, Cipher ist ECDHE-RSA-AES256-GCM-SHA384":
$ openssl s_server -accept 8888 -cert server-cert.pem -key server-key.pem -pass stdin -CAfile ca-cert.pem -state
<password entered here>
$ openssl s_client -connect 127.0.0.1:8888 -cert client-cert.pem -key client-key.pem -pass stdin -CAfile ca-cert.pem -state
<password entered here>
Mit der gemeinsamen Chiffre Informationen wie folgt:
Shared ciphers:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-R
SA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES2
56-SHA:SRP-DSS-AES-256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:DHE-DSS-AES256-GCM-SHA384
:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:DHE-RSA-A
ES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:ECD
H-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH
-ECDSA-AES256-SHA384:ECDH-RSA-AES256-SHA:ECDH-ECDSA-AES256-SHA:AES256-GCM-SHA384
:AES256-SHA256:AES256-SHA:CAMELLIA256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES
-CBC3-SHA:SRP-DSS-3DES-EDE-CBC-SHA:SRP-RSA-3DES-EDE-CBC-SHA:EDH-RSA-DES-CBC3-SHA
:EDH-DSS-DES-CBC3-SHA:ECDH-RSA-DES-CBC3-SHA:ECDH-ECDSA-DES-CBC3-SHA:DES-CBC3-SHA
:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA2
56:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:SRP-DSS
-AES-128-CBC-SHA:SRP-RSA-AES-128-CBC-SHA:DHE-DSS-AES128-GCM-SHA256
Die folgenden Befehle funktionieren NICHT, wenn ich geben Sie eine Ziffer auf dem server oder dem client und dem server. Beachten Sie, dass die ECDHE-ECDSA-AES128-GCM-SHA256 cipher ist gelistet als freigegebenes in der obigen Liste.
$ openssl s_server -accept 8888 -cert server-cert.pem -key server-key.pem -pass stdin -CAfile ca-cert.pem -cipher ECDHE-ECDSA-AES128-GCM-SHA256
<password entered here>
<< Server output after client connection attempt >>
Using default temp DH parameters
Using default temp ECDH parameters
ACCEPT
ERROR
2674688:error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher:s3_srvr.c:1353:
shutting down SSL
CONNECTION CLOSED
ACCEPT
$ openssl s_client -connect 127.0.0.1:8888 -cert client-cert.pem -key client-key.pem -pass stdin -CAfile ca-cert.pem -cipher ECDHE-ECDSA-AES128-GCM-SHA256
<password entered here>
<<client output after connection attempt>>
CONNECTED(00000003)
2674688:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:708:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 166 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
Hat jemand irgendwelche Ideen? Vielen Dank im Voraus!
- Welche version von openssl verwenden Sie? openssl-version
- Ich bin mit OpenSSL 1.0.1 14 Mar 2012
- Auch sicher sein, zu verwenden "benannte Kurve". Für die details finden Sie unter Elliptic Curve Cryptography | Named Curves auf die OpenSSL-wiki.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind, dass Sie die falsche Art von Schlüssel (mit dem
Müssen Sie ecparam
und
genrsa
erzeugt ein RSA-Schlüssel, der, wenn verwendet mit ECDHE, authentifiziert das Elliptic Curve Diffie Hellman key Exchange (ECDHE).Den ECDSA in ECDHE-ECDSA-AES128-GCM-SHA256 heißt, Sie müssen die Elliptic Curve Digital Signature Algorithmus zum authentifizieren der Schlüssel. Weil Sie nicht haben, diese Art von Schlüssel, schlägt der Befehl fehl. Jedoch, ECDHE-RSA-AES256-GCM-SHA384 funktioniert, weil es verwendet RSA-Schlüssel, die Sie haben.
Sind Sie immer sha384, weil openssl nimmt die stärkste cipher suite und alle Dinge gleich sind sha384 ist besser als sha256. Sie können dies überschreiben, und wie es aussieht, hast du ja mit
--cipher
.Hinweis: Sie möchten möglicherweise verwenden Sie eine andere Kurve. Sie können die vollständige Liste mit
Aus Neugier, warum, dass bestimmte cipher-suite? ECDHE-und ECDSA sind state of the art, aber sha256 ist nur standard, und auch AES-128 ist sicherlich gut genug, die Menschen neigen dazu, zu verwenden, 256, wenn Sie so vorsichtig wie der ECDHE und ECDSA Sachen impliziert.
openssl s_server -accept 8888 -cert server.cert -key server.key -pass stdin -CAfile ca.cert -cipher ECDHE-ECDSA-AES128-GCM-SHA256
undopenssl s_client -connect 127.0.0.1:8888 -cert client.cert -key client.key -pass stdin -CAfile ca.cert -cipher ECDHE-ECDSA-AES128-GCM-SHA256