Próbuję skonfigurować bezpieczne połączenie (https) w Nginx.
Ale trochę martwię się o uprawnienia klucza prywatnego, które nie są wymienione w żadnym samouczku.
Czy powinienem je zmienić? Do czego?
Próbuję skonfigurować bezpieczne połączenie (https) w Nginx.
Ale trochę martwię się o uprawnienia klucza prywatnego, które nie są wymienione w żadnym samouczku.
Czy powinienem je zmienić? Do czego?
Odpowiedzi:
Klucze prywatne powinny być mocno ograniczone. Ustawianie uprawnień 600
i własności root
powinno działać. Istnieją jednak inne bezpieczne ustawienia uprawnień - Ubuntu przechowuje klucze w katalogu z właścicielem root
i grupą ssl-cert
oraz uprawnieniami 710
. Oznacza to, że tylko członkowie ssl-cert
mogą uzyskiwać dostęp do dowolnych plików w tym katalogu. Klucze prywatne mają następnie grupę ssl-cert
, właściciela root
i uprawnienia 640
.
Miałem problem z konfiguracją Nginx i natknąłem się na to pytanie. Inna odpowiedź tutaj już odpowiedziała bezpośrednio na pytanie, ale pomyślałem, że trochę więcej informacji byłoby pomocne.
Zwykle nginx jest uruchamiany jako root
użytkownik przez skrypty inicjujące / systemd. Jednak nginx ma również możliwość przełączania się na mniej uprzywilejowanego użytkownika do normalnych operacji. Więc moje pytanie brzmiało, który użytkownik jest używany do załadowania certyfikatu / klucza ssl? Początkowy uprzywilejowany użytkownik czy ten, na który się przełączono?
Na szczęście nginx używa początkowych uprawnień do odczytu certyfikatu i klucza do pamięci przed zmianą użytkowników. Tak więc normalnie naprawdę możesz zostawić klucze z bardzo ograniczonymi uprawnieniami, ponieważ są one ładowane przez nginx, gdy nadal działa jako root
.
Problem, na który wpadłem, który mnie tu wylądował, polegał na tym, że definiowałem go ssl_certificate
tylko w server
blokach nginx.conf
. Otrzymywałem błędy, jak [error] 18606#18606: *311 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking
wtedy, gdy wiedziałem, że dobrze i dobrze, że moje klucze były na właściwym miejscu. Problem polegał na tym, że nie miałem ssl_certificate
na http
poziomie nginx.conf
.
Mam nadzieję, że jest to pomocne dla kogoś.
nginx
grupie. Serwer WWW będzie mógł z nich korzystać, nawet jeśli są one czytelne tylko przezroot
(tak, jak powinny).