Hasło SSL przy ponownym uruchomieniu apache2

33

Zainstalowałem wieloznaczny certyfikat SSL od Godaddy na Apache2. Za każdym razem, gdy serwer uruchamia się ponownie, prosi o podanie hasła prywatnego klucza certyfikatu SSL.

Jaki jest najlepszy sposób na usunięcie tej przeszkody w ponownym uruchomieniu, ponieważ gdy restart rotacji pliku dziennika następuje w środku nocy, serwer nie wraca i rano otrzymuję nieszczęśliwe wezwanie klienta, ponieważ jest to serwer współdzielony .

ryw
źródło
5
Chociaż odpowiedź na pytanie jest aktualna, dodaję: Rotacja pliku dziennika nie wymaga ponownego uruchomienia. Przeładowanie będzie w porządku i nie będzie wymagać przedstawienia poświadczeń.
Jan Jungnickel,
Dzięki Jan - dobra uwaga - właściwie nie jestem pewien, dlaczego wycinek jest ponownie uruchamiany - wydaje się, że dzieje się to około 1 tygodnia. Muszę się
pogłębić,

Odpowiedzi:

28

Aby apache otrzymywał hasło przy każdym ponownym uruchomieniu, dodaj to do httpd.conf:

SSLPassPhraseDialog exec:/path/to/passphrase-file

w pliku passphrase:

#!/bin/sh
echo "passphrase"

i uczyń plik-hasłem wykonywalnym:

chmod +x passphrase-file
chłodna woda
źródło
1
też dla mnie pracował! : D
markcial
5
Pamiętaj, aby ustawić odpowiednie uprawnienia dla skryptu zawierającego hasło , w przeciwnym razie skutecznie usunąłeś wszelkie zabezpieczenia, które dał ci hasło. (Powinieneś także ustawić odpowiednie uprawnienia do klucza, jak opisano w odpowiedzi Maxa).
voretaq7
6
W jaki sposób przechowywanie klucza (z hasłem) z uprawnieniami 600 i ten skrypt z uprawnieniami 700 jest bezpieczniejszy niż przechowywanie klucza bez hasła z uprawnieniami 600, biorąc pod uwagę, że właścicielem obu plików musi być użytkownik root, prawda?
zelanix
5
Zgadzam się; to bezcelowe bezpieczeństwo. Z całą pewnością usuwaj hasło z klucza, aby zautomatyzować ponowne uruchomienie; ale nie sądzę, że możesz w jakikolwiek sposób przywrócić utraconą ochronę. Często jest to dobry kompromis, ale jest to kompromis.
MadHatter obsługuje Monikę
Dla kompletności link do powiązanej dokumentacji Apache: httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslpassphrasedialog
alk
29

Musisz usunąć szyfrowanie z pliku klucza prywatnego w następujący sposób:

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

mv server.key.new server.key

Upewnij się, że nowy plik klucza jest czytelny tylko dla użytkownika root - w przeciwnym razie każdy, kto ma dostęp do powłoki na tym serwerze, będzie mógł pobrać klucz prywatny i podszyć się pod serwer.

Aby klucz był czytelny tylko przez root, przed zamianą kluczy wykonaj „chmod 600 server.key.new”.

Max Alginin
źródło
wypróbowałem twój pomysł, wciąż dostaję wyzwanie na sudo ./apache2 restart :(
ryw
4
+1, ponieważ to nie jest „pomysł”, to faktyczna procedura
kodhead
użyłem terminu „pomysł”, ponieważ to nie działało dla mnie.
ryw
2
w jaki sposób hasło sprawia, że ​​certyfikat ssl jest bezpieczniejszy, jeśli można go tak łatwo usunąć bez wymagania hasła? (czy prosi o
podanie
3
@ user2693017 - Opisane tutaj polecenie openssl poprosi o hasło zaszyfrowanego klucza prywatnego. Bez znajomości hasła usunięcie go nie będzie działać.
Michael Paesold