Uprawnienia do klucza SSL?

15

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?

ChocoDeveloper
źródło

Odpowiedzi:

15

Klucze prywatne powinny być mocno ograniczone. Ustawianie uprawnień 600i własności rootpowinno działać. Istnieją jednak inne bezpieczne ustawienia uprawnień - Ubuntu przechowuje klucze w katalogu z właścicielem rooti grupą ssl-certoraz uprawnieniami 710. Oznacza to, że tylko członkowie ssl-certmogą uzyskiwać dostęp do dowolnych plików w tym katalogu. Klucze prywatne mają następnie grupę ssl-cert, właściciela rooti uprawnienia 640.

cpast
źródło
2
Dodam, dla szczegółowości: Używając nginx na CentOS 7, nie jest konieczne, aby certyfikat lub klucz prywatny były czytelne dla osób w nginxgrupie. Serwer WWW będzie mógł z nich korzystać, nawet jeśli są one czytelne tylko przez root(tak, jak powinny).
3

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 rootuż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_certificatetylko w serverblokach nginx.conf. Otrzymywałem błędy, jak [error] 18606#18606: *311 no "ssl_certificate" is defined in server listening on SSL port while SSL handshakingwtedy, 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_certificatena httppoziomie nginx.conf.

Mam nadzieję, że jest to pomocne dla kogoś.

Cameron Tacklind
źródło