Tôi đã tự hỏi liệu có yêu cầu tạo khóa tối thiểu cho ECDHE-ECDSA-AES128-GCM-SHA256 và ECDHE-ECDSA-AES128-GCM-SHA256 không? Tôi đang cố gắng để có được một khách hàng TLS và máy chủ bằng cách sử dụng một trong các thuật toán trên để kết nối với nhau và tiếp tục nhận được 'không có lỗi mật mã được chia sẻ'. Tôi đã tạo một CA để ký các chứng chỉ máy khách và máy chủ, và cố gắng kết nối với chỉ openssl và cũng trong node.js. Tôi đang chạy cliengt và máy chủ trên localhost (127.0.0.1) để loại bỏ bất kỳ vấn đề khác có thể.Yêu cầu tạo khóa cho TLS ECDHE-ECDSA-AES128-GCM-SHA256
Dưới đây là những gì tôi đã làm cho đến nay:
CA then chốt tạo cặp:
$ openssl genrsa -out ca-key.pem 4096
$ openssl req -new -x509 -days 365 -key ca-key.pem -out ca-cert.pem
Server/client cặp khóa tạo:
$ 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
tôi ban đầu cố gắng để kết nối với một máy chủ node.js từ dòng lệnh (tls.createServer() với các tùy chọn: mật mã: 'ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-ECDSA-AES128-GCM-SHA256'), nhưng để loại bỏ sự nghi ngờ về nút, tôi đã giảm trở lại để mở ssl cho cả việc tạo máy khách và máy chủ.
Các lệnh sau đây ĐÚNG kết nối cho client và server và khẳng định nó được sử dụng một mật mã của "New, TLSv1/SSLv3, Cipher là 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>
Với sự thông tin mật mã được chia sẻ như sau:
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
Các lệnh sau KHÔNG hoạt động khi tôi chỉ định mật mã trên máy chủ hoặc máy khách và máy chủ. Lưu ý rằng mật mã ECDHE-ECDSA-AES128-GCM-SHA256 được liệt kê như được chia sẻ trong danh sách trên.
$ 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
---
Có ai có ý tưởng nào không? Cảm ơn trước!
Bạn đang sử dụng phiên bản openssl nào? openssl version –
Tôi đang sử dụng OpenSSL 1.0.1 14 Mar 2012 – aspergillusOryzae
Ngoài ra, hãy đảm bảo sử dụng "đường cong có tên". Để biết chi tiết, xem [Elliptic Curve Cryptography | Các đường cong được đặt tên] (https://wiki.openssl.org/index.php/Elliptic_Curve_Cryptography#Named_Curves) trên wiki OpenSSL. – jww