2012-08-16 31 views
18

Tôi đang tạo ứng dụng máy chủ trong C++ cần chấp nhận chứng chỉ chứa khóa công khai ECDSA. Nó phải xác thực chứng chỉ và, sau khi xác minh, sử dụng khóa công khai có trong chứng chỉ để xác thực thư được gửi cùng với chứng chỉ. Tôi có tất cả điều này làm việc bằng cách sử dụng ECSDA keypairs tạo ra trên cúm - tức là mã của tôi đang làm việc độc đáo - nhưng bây giờ tôi cần phải làm phần giấy chứng nhận. Và tôi nghĩ rằng tôi có thể sử dụng dòng lệnh OpenSSL để tạo chứng chỉ được cài đặt trên máy khách (cùng với khóa riêng ECDSA trong một tệp riêng biệt).Làm cách nào để tạo chứng chỉ ECDSA bằng dòng lệnh OpenSSL

Có ai giúp được không?

Cảm ơn nhiều.

Trả lời

28

Nếu bạn chưa chọn một đường cong, bạn có thể liệt kê chúng bằng lệnh này:

openssl ecparam -list_curves 

tôi nhặt sect571r1 ví dụ này. Sử dụng điều này để tạo khóa riêng của EC nếu bạn chưa có khóa riêng:

openssl ecparam -out ec_key.pem -name sect571r1 -genkey 

Sau đó tạo chứng chỉ. Chứng chỉ của bạn sẽ ở số cert.pem.

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

Xem thêm: req, ecparam

+2

'secp256k1' có lẽ là tương thích nhất vào lúc này. – jww

+8

Tôi nghĩ bạn có nghĩa là 'secp256r1'. Theo [bài đăng này] (http://openssl.6102.n7.nabble.com/P-256-curve-not-supported-in-openssl-1-0-1-tp5379p5380.html) nó được gọi là 'prime256v1' trong OpenSSL. – oliverdm

Các vấn đề liên quan