Tạo chứng chỉ SSL không tương tác [đã đóng]


28

Tôi muốn âm thầm, không tương tác, tạo chứng chỉ SSL. Tức là, không có được nhắc cho bất kỳ dữ liệu.

Cách thông thường tôi tạo chứng chỉ sẽ là:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 \
    -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem 

Tôi đã thử như sau:

openssl genrsa -out server.key 2048
touch openssl.cnf

cat >> openssl.cnf <<EOF
[ req ]
prompt = no
distinguished_name = req_distinguished_name

[ req_distinguished_name ]
C = GB
ST = Test State
L = Test Locality
O = Org Name
OU = Org Unit Name
CN = Common Name
emailAddress = test@email.com
EOF

openssl req -x509 -config openssl.cnf -nodes -days 7300 \
    -signkey server.key -out /etc/ssl/private/pure-ftpd.pem 

Nhưng tôi vẫn nhận được một lời nhắc cho dữ liệu.


1
Bạn có thể cung cấp một lời giải thích hoặc đầu ra của những gì đang xảy ra thay vì kết quả mong muốn?
Patrick

Tôi nhận được sự giúp đỡ như một đầu ra- Mọi thứ đều sai với các tham số ở đây:openssl req -x509 -config openssl.cnf -nodes -days 7300 -signkey server.key -out /etc/ssl/private/pure-ftpd.pem
TheNiceGuy

Tốt nhất là cung cấp đầu ra của lỗi khi bạn gặp sự cố. Tôi đoán vấn đề của bạn là vì -signkey. Đây không phải là một openssl reqlựa chọn hợp lệ trên hệ thống của tôi. Thông báo lỗi sẽ có dòng này ngay từ dòng đầu tiên:unknown option -signkey
Patrick

Vâng, dấu hiệu đó sẽ cho SSL sử dụng khóa được cung cấp như tôi biết?
TheNiceGuy

"Cách thông thường để tạo chứng chỉ" không nhắc nhở cho bất kỳ dữ liệu nào. Bạn không muốn nó đầu ra bất cứ điều gì? Sau đó sử dụng 2> /dev/null.
wingbedubmariner

Câu trả lời:


51

Điều bạn thiếu là bao gồm chủ đề chứng chỉ trong -subjcờ. Tôi thích điều này để tạo một tệp cấu hình vì việc tích hợp vào quy trình công việc sẽ dễ dàng hơn và không cần phải dọn dẹp sau đó.

Khóa một bước và tạo csr:

openssl req -new -newkey rsa:4096 -nodes \
    -keyout www.example.com.key -out www.example.com.csr \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com"

Tạo một bước tự tạo chứng chỉ không mật khẩu:

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \
    -keyout www.example.com.key  -out www.example.com.cert

Cả hai lệnh này sẽ không cho bất kỳ dữ liệu nào.

Xem câu trả lời của tôi cho câu hỏi gần như giống hệt nhau này trên Super User.


Ồ, đó là một giải pháp tốt. Làm cho các mã nhỏ hơn nhiều. Cảm ơn: D
TheNiceGuy

1
Tôi đã không sửa đổi tập tin cấu hình ban đầu của anh ấy, vì tôi nghĩ rằng nó có thể là một standin cho một chứng chỉ phức tạp hơn. Một số cấu hình không thể được biểu diễn bằng một -subjtham số, đặc biệt là khi bạn truy cập vào phần mở rộng v3 và tham số chủ đềAltName.
robbat2

1
Bạn cũng có thể sử dụng -batch(chế độ không tương tác)
Eran H.

Lưu ý rằng lệnh đầu tiên dường như yêu cầu khóa tồn tại trước khi có thể được thực thi trong đó lệnh thứ hai tạo khóa và chứng nhận tự động vì đây -subjlà CSR nội tuyến hợp lệ cơ bản.
dragon788

@ dragon788 Cảm ơn bạn đã chỉ ra điều đó. Tôi sửa nó rồi.
bahamat

1

Lệnh bạn đang tìm kiếm là:

openssl req -new -x509 -config openssl.cnf -nodes -days 7300 -key server.key -out /etc/ssl/private/pure-ftpd.pem

Thay đổi từ phiên bản của bạn:

  • -new được yêu cầu để tạo ra bất cứ điều gì
  • -key được sử dụng thay thế -signkey
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.