Có thể tạo khóa RSA mà không cần cụm từ không?


83

Tôi đang làm việc với Apache2 và Hành khách cho một dự án Rails. Tôi muốn tạo Chứng chỉ SSL tự ký cho mục đích thử nghiệm.

sudo openssl rsa -des3 -in server.key -out server.key.new

Khi tôi nhập lệnh trên, nó nói

writing RSA key
Enter PEM pass phrase:

Nếu tôi không nhập pass phrse, tôi sẽ gặp lỗi dưới đây

unable to write key
3079317228:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:Yo
u must type in 4 to 1024 characters
3079317228:error:0906406D:PEM routines:PEM_def_callback:problems getting passwor
d:pem_lib.c:111:
3079317228:error:0906906F:PEM routines:PEM_ASN1_write_bio:read key:pem_lib.c:382

Có thể tạo khóa RSA mà không cần cung cấp không pass phrase, vì tôi không chắc /etc/init.d/httpdtập lệnh sẽ khởi động máy chủ HTTP như thế nào mà không cần sự can thiệp của con người (ví dụ: Nếu tôi đưa ra cụm từ vượt qua 4 ký tự, tôi hy vọng tôi sẽ cung cấp điều này trong khi khởi động máy chủ HTTP Apache ).


6
Dòng lệnh của bạn nói opensslđể mã hóa một khóa hiện có. Nghe có vẻ như một cái gì đó khác với những gì bạn muốn.
David Schwartz

Apache httpd có thể được cấu hình để có được (các) cụm mật khẩu riêng tư không tương tác; xem tài liệu cho mod_ssl hoặc trong nhiều trường hợp nhận xét trong (các) tệp cấu hình được cung cấp / đóng gói. Tuy nhiên, điều này thường không an toàn hơn là chỉ để mã riêng không bị mã hóa, điều này đơn giản hơn.
dave_thndry_085

Câu trả lời:


88

Nếu bạn đang tạo chứng chỉ tự ký, bạn có thể thực hiện cả khóa và chứng chỉ trong một lệnh như sau:

openssl req  -nodes -new -x509  -keyout server.key -out server.cert

Ồ, và những gì @MadHatter đã nói trong câu trả lời của anh ấy về việc bỏ -des3cờ.


14
Các nút chỉ thị là lý do tại sao tôi ở đây. (Không mã hóa DES của khóa riêng)
jorfus

38

Bỏ -des3cờ, đó là một hướng dẫn để openssl để mã hóa server.key.new (tình cờ, hoàn toàn không phải là một khóa mới - nó hoàn toàn giống với server.key, chỉ với cụm mật khẩu được thay đổi / loại bỏ) .


21

Các openssl reqlệnh từ câu trả lời của @ Tom H là đúng để tạo ra một chứng chỉ tự ký trong server.certincl. khóa riêng RSA không có mật khẩu trong server.key:

openssl req -nodes -new -x509 -keyout server.key -out server.cert

Đây là cách nó làm việc. Bỏ qua -des3như trong câu trả lời của @MadHatter là không đủ trong trường hợp này để tạo khóa riêng không có cụm mật khẩu. Nó đủ cho mục đích này trong openssl rsa( "chuyển đổi một khóa bí mật") lệnh gọi bằng @MadHatter và openssl genrsa( "tạo ra một khóa bí mật") lệnh. Chỉ không cho openssl reqlệnh ở đây. Chúng tôi cũng cần thêm -nodes("Không mã hóa DES server.keyxin vui lòng!").


17

Sử dụng -nodestham số, nếu tùy chọn này được chỉ định thì khóa riêng sẽ không được mã hóa, ví dụ:

openssl \
    req \
    -nodes \
    -newkey rsa:2048 \
    -keyout www.example.com.key \
    -out www.example.com.csr \
    -subj "/C=DE/ST=NRW/L=Berlin/O=My Inc/OU=DevOps/CN=www.example.com/emailAddress=dev@www.example.com"

7

Chỉ cần chạy lại thông qua openssl

đầu tiên tạo khóa bằng cụm mật khẩu

sau đó openssl rsa -in server.key -out server.key


Điều này không hoạt động trên Ubuntu 16.04
sweetfa

3
Tôi đã bỏ qua vì câu trả lời này không phải là những gì được hỏi, lệnh cũng yêu cầu đầu vào và không tạo khóa.
Don

Người dùng đã chứng minh rằng họ biết cách tạo khóa. Câu trả lời này dựa trên kiến ​​thức đó và tôi đề nghị lấy khóa mới được tạo và chuyển lại thông qua openssl đó để đạt được mục tiêu của những gì được hỏi: tạo khóa không có cụm từ thông qua.
darethas

Hoạt động với tôi, openssltrên Windows 10 từ GitBash. Cảm ơn thông tin.
Màu xanh lá cây

0

Sử dụng lệnh tiếp theo để tạo tệp khóa riêng không cần mật khẩu với mã hóa KHÔNG . Tham số cuối cùng là kích thước của khóa riêng.

openssl genrsa -out my-passless-private.key 4096

1
Đây KHÔNG phải là mật khẩu. Nó là mật khẩu hoàn toàn và hoàn toàn.
dave_thndry_085

Tôi đã thử nghiệm với vị trí của các tham số. Bây giờ là ổn rồi. Tôi đã thay đổi vị trí của hai tham số cuối cùng và kiểm tra lệnh.
nix

Bây giờ nó tạo ra một tập tin không được mã hóa . Các tùy chọn sau khi (chỉ) đối số vị trí được bỏ qua. Nhìn vào tập tin; nó không được mã hóa. Thay thế 4096 -des3bằng 4096 -sillywombatvà nó vẫn hoạt động và tạo ra cùng một định dạng, vẫn không được mã hóa (tất nhiên là một giá trị khóa khác). Không có cách nào để có một tệp tin cá nhân được mã hóa không mật khẩu và các giải pháp chính xác cho một tệp không được mã hóa bằng mật khẩu đã được đưa ra sáu năm trước.
dave_thndry_085

Bạn đúng rồi. @ dave_thndry_085. Tham số cuối cùng không ảnh hưởng đến lệnh. Tôi cập nhật câu trả lời của tôi. Nó không tạo ra mã khóa cơ sở được mã hóa64 và không được bảo vệ bằng mật khẩu.
nix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.