2012-02-21 8 views
29

Tôi đang cố gắng thiết lập SSL trên Nginx. Nó không hoạt động, và tôi nhận được lỗi sau trong nhật ký lỗi, đó là nhận được thông qua từ thư viện OpenSSL mà nginx đã được biên dịch. Tôi không biết thư viện đó là gì, nhưng đó là phiên bản 0.8.54 của nginx, và tôi đã cài đặt nó bằng cách sử dụng apt-get trên Ubuntu Linux.Lỗi "SSL_CTX_use_PrivateKey_file" "sự cố khi nhận được lỗi mật khẩu" cho biết trong nhật ký lỗi Nginx là gì?

2012/02/21 07:06:33 [emerg] 4071#0: 
SSL_CTX_use_PrivateKey_file("/exequias/certs/exequias.com.key") failed (SSL: 
error:0906406D:PEM routines:PEM_def_callback:problems getting password error: 
0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines: 
SSL_CTX_use_PrivateKey_file:PEM lib) 

Tôi đảm bảo rằng quyền đối với tệp trên tệp khóa cá nhân không dừng nginx khi đọc. Đây là khóa riêng RSA, được tạo với openssl rsa.

Bất kỳ ý tưởng nào có thể gây ra điều này?

Trả lời

17

Tôi nhận được ... tệp khóa cá nhân được sử dụng với nginx phải không phải là có cụm mật khẩu. Tôi đã xóa cụm mật khẩu và nó đã hoạt động.

+0

Làm thế nào để loại bỏ passhprase? – crossle

+0

Tôi không nhớ - tôi có thể vừa tạo một khóa riêng mới với 'openssl' và để lại cụm mật khẩu. –

+0

Cảm ơn, tôi nhớ passhprase. – crossle

46

Tháo pass phrase chính:

openssl rsa -in key.pem -out newkey.pem 

Nếu họ chứng chỉ và khóa ở bên nhau:

openssl rsa -in mycert.pem -out newcert.pem 
openssl x509 -in mycert.pem >>newcert.pem 

Nguồn: http://www.madboa.com/geek/openssl/#key-removepass

+2

Cảm ơn rất nhiều! Tôi đã ở R'lyeh. Bạn đã cứu sự tỉnh táo của tôi. – divs1210

+1

Bạn được chào đón :-) Tôi nghe bạn. Đó là hai năm kể từ khi tôi đã viết câu trả lời này và bây giờ tôi không nhớ một điều về điều này: D #insanityrealized –

+0

Cảm ơn lệnh đầu tiên, bây giờ tất cả mọi thứ hoạt động! – Aminos

1

Câu hỏi đặt ra là một chút cũ bây giờ, và nginx thực hỗ trợ mật khẩu yêu cầu khi khởi động từ ít nhất là phiên bản 1.2. Nhưng vấn đề vẫn còn có liên quan bởi vì khả năng này đã được gỡ bỏ khỏi debian trong bản phát hành mới nhất, phiên bản 8 với nginx 1.6. Lý do là đầu vào cụm mật khẩu đã không được thực hiện trong kịch bản systemd cho nginx, trong khi nó đã được cho apache. Việc khởi chạy nginx theo cách thủ công chỉ đơn giản là hoạt động, và nó không phải là một vấn đề vì sự can thiệp thủ công là cần thiết, không có sử dụng systemd ở đây.

tham khảo: https://forum.nginx.org/read.php?2,262900,262931#msg-262931

4

Bởi vì bạn tạo ra các tập tin .crt với cụm từ mật khẩu, vì vậy bạn cần phải xác định cụm từ mật khẩu tương tự cho .key của bạn và file .crt trong Nginx conf như thế này

server { 
    ssl_password_file /path-to-your-passphrase/ssl.pass; 
} 

Xem Nginx Doc

Hoặc nếu bạn không cần cụm từ mật khẩu cho file cert của bạn, chỉ cần sử dụng ssh-keygen công cụ để tạo ra các tập tin như sau:

ssh-keygen -t rsa 
+0

Giả sử nó chỉ hoạt động trong nginx> = 1.7.3 –

+0

@ JosephCoco Yep, bạn nói đúng. Tôi cần chỉnh sửa câu trả lời của mình. – sudoz

+0

Hoàn hảo: thumbsup: – Will