2012-02-21 17 views
29

Próbuję skonfigurować SSL w Nginx. To nie działa, a otrzymuję następujący błąd w dzienniku błędów, który jest przekazywany z biblioteki OpenSSL, z którą skompilowano nginx. Nie wiem, czym jest ta biblioteka, ale jest to wersja 0.8.54 nginx i zainstalowałem ją za pomocą apt-get na Ubuntu Linux.Co oznacza problem "Błąd SSL_CTX_use_PrivateKey" w dzienniku błędów Nginx?

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) 

Upewniłem się, że uprawnienia do pliku na pliku klucza prywatnego nie powstrzymują nginx przed jego odczytaniem. Jest to klucz prywatny RSA, wygenerowany przez openssl rsa.

Jakieś pomysły, które mogą być przyczyną?

Odpowiedz

17

Mam go ... plik klucza prywatnego używany z nginx musi nie mieć hasło. Usunąłem hasło i zadziałało.

+0

Jak usunąć passhprase? – crossle

+0

Nie pamiętam - być może właśnie wygenerowałem nowy klucz prywatny z 'openssl' i zostawiłam frazę hasła. –

+0

Dzięki, pamiętam passhprase. – crossle

46

wyjąć kluczyk frazę:

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

Jeśli certyfikat oni i klucz są razem:

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

Źródło: http://www.madboa.com/geek/openssl/#key-removepass

+2

Wielkie dzięki! Byłem w R'lyeh. Uratowałeś moje zdrowie psychiczne. – divs1210

+1

Nie ma za co :-) Słyszę cię. Minęły dwa lata, odkąd napisałem tę odpowiedź, a teraz nie pamiętam nic na ten temat: D #insanityrealized –

+0

Dzięki za pierwsze polecenie, teraz wszystko działa! – Aminos

1

Pytanie jest trochę stary teraz i nginx faktycznie obsługuje hasło pytające przy starcie od co najmniej wersji 1.2. Problem ten jest nadal istotny, ponieważ ta możliwość została usunięta z debiana w najnowszej wersji, w wersji 8 z nginxem 1.6. Powodem jest to, że dane wejściowe dla hasła nie zostały zaimplementowane w skrypcie systemd dla nginx, podczas gdy było ono dla apache. Ręczne uruchamianie nginxa po prostu działa i nie stanowi to problemu, ponieważ wymagana jest ręczna interwencja, nie ma tu zastosowania systemd.

referencyjny: https://forum.nginx.org/read.php?2,262900,262931#msg-262931

4

Bo wygenerować plik .crt z hasłem, więc trzeba podać to samo hasło dla .key i .crt plik w Nginx conf tak

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

Zobacz Nginx Doc

Lub jeśli nie potrzebujesz hasło do pliku cert, wystarczy użyć ssh-keygen narzędzie do generowania pliku w następujący sposób:

ssh-keygen -t rsa 
+0

Podobno działa to tylko w nginx> = 1.7.3 –

+0

@JosephCoco Tak, masz rację. Muszę edytować swoją odpowiedź. – sudoz

+0

Idealny: thumbsup: – Will

Powiązane problemy