2013-06-17 28 views
26

Tôi đang sử dụng lệnh openssl bên dưới để lưu khóa công khai của tôi vào tệp .pem.Cách lưu khóa công khai từ chứng chỉ ở định dạng .pem

openssl> x509 -in E:/mycert.pem -pubkey -out E:/mypubkey.pem 

Nhưng khi tôi cố gắng sử dụng lệnh này, lưu trữ toàn bộ thông tin chứng chỉ trong tệp mypubkey.pem.

Tôi đã thấy rằng tôi có thể tiết kiệm khóa công khai của tôi sử dụng

openssl> x509 -pubkey -noout -in cert.pem > pubkey.pem 

Nhưng nó được ném một lỗi. Tôi không thể sử dụng toán tử ">".

+0

Stack Overflow là trang web dành cho các câu hỏi lập trình và phát triển. Câu hỏi này dường như không có chủ đề vì nó không phải là về lập trình hay phát triển. Xem [Tôi có thể hỏi những chủ đề gì ở đây] (http://stackoverflow.com/help/on-topic) trong Trung tâm trợ giúp. Có lẽ [Super User] (http://superuser.com/) hoặc [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) sẽ là một nơi tốt hơn để hỏi. Đồng thời xem [Tôi nên đăng câu hỏi về Dev Ops ở đâu?] (Http://meta.stackexchange.com/q/134306) – jww

Trả lời

74

Có một số cách để thực hiện việc này.

Thứ nhất, thay vì đi vào chế độ dấu nhắc lệnh openssl, chỉ cần nhập tất cả mọi thứ trên cùng một dòng lệnh từ màn hình Windows:

E:\> openssl x509 -pubkey -noout -in cert.pem > pubkey.pem 

Nếu vì một lý do nào, bạn phải sử dụng cửa sổ lệnh openssl, chỉ cần nhập tất cả mọi thứ lên đến ">". Sau đó OpenSSL sẽ in ra thông tin khóa công khai trên màn hình. Sau đó bạn có thể sao chép và dán nó vào một tệp có tên pubkey.pem.

openssl> x509 -pubkey -noout -in cert.pem 

Output sẽ giống như thế này:

-----BEGIN PUBLIC KEY----- 
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAryQICCl6NZ5gDKrnSztO 
3Hy8PEUcuyvg/ikC+VcIo2SFFSf18a3IMYldIugqqqZCs4/4uVW3sbdLs/6PfgdX 
7O9D22ZiFWHPYA2k2N744MNiCD1UE+tJyllUhSblK48bn+v1oZHCM0nYQ2NqUkvS 
j+hwUU3RiWl7x3D2s9wSdNt7XUtW05a/FXehsPSiJfKvHJJnGOX0BgTvkLnkAOTd 
OrUZ/wK69Dzu4IvrN4vs9Nes8vbwPa/ddZEzGR0cQMt0JBkhk9kU/qwqUseP1QRJ 
5I1jR4g8aYPL/ke9K35PxZWuDp3U0UPAZ3PjFAh+5T+fc7gzCs9dPzSHloruU+gl 
FQIDAQAB 
-----END PUBLIC KEY----- 
+0

Ty để trả lời. Cách tiếp cận thứ hai là chấp nhận được. Nhưng tôi muốn lưu nó thông qua dấu nhắc lệnh chính nó. Tôi không có openssl được cài đặt trên hệ thống của tôi. Tôi đang sử dụng các tập tin nhị phân trực tiếp để chạy dấu nhắc lệnh openssl. Phiên bản tôi đang sử dụng là openssl-0.9.8k_WIN32. SO khi tôi cố gắng chạy lệnh 1 trong cửa sổ nhắc nó được hiển thị lỗi. – Ankit

+1

Lỗi nào bạn thấy khi chạy lệnh 1? Bạn có nhận được phiên bản openssl ở đây không -> [https://code.google.com/p/openssl-for-windows/](https://code.google.com/p/openssl-for-windows/) hoặc ở đâu khác? – gtrig

+0

Có, tôi đang sử dụng cùng một phiên bản openssl. – Ankit

5

Bạn không thể sử dụng > tại dấu nhắc tương tác OpenSSL. Thay vào đó, hãy sử dụng đối số -out để ghi đầu ra vào tệp. Ví dụ.

openssl> x509 -pubkey -noout -in cert.pem -out pubkey.pem 
1

nếu nó là một khóa RSA

openssl rsa -pubout -in my_rsa_key.pem 

nếu bạn cần nó trong một định dạng cho openssh, vui lòng xem Use RSA private key to generate public key?

Lưu ý rằng khóa công khai được tạo ra từ những ứng dụng quan trọng và ssh tin tệp nhận dạng (tệp khóa cá nhân) để tạo và gửi khóa công khai tới máy chủ và bỏ mã hóa mã thông báo được mã hóa từ máy chủ thông qua khóa cá nhân trong tệp danh tính.

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