Güvenlik Sertifikalarımı Yenilediğimde Nginx'i Yeniden Başlatmam Gerekiyor mu?


33

Bu yüzden SSL ile bir nginx sunucusu kurdum ve bunun gibi bir sunucu tanımını etkinleştirdim:

server {
    listen :80;
    listen [::]:80;
    server_name example.org;
    root /foo/bar;

    ssl on;
    ssl_certificate /path/to/public/certificate;
    ssl_certificate_key /path/to/private/key;

    ...
}

Bu fikri anladınız (lütfen yazım hatalarını affedin).

Neyse, merak ettiğim şey; Sertifikalarımı yenileyebilirsem, nginx'i yeniden başlatmak zorunda kalmadan yüklemek için bir yol var mı?

Ben olsaydı Örneğin, gelen sembolik bağlantıları kullanmak /path/to/public/certificateve /path/to/private/keyhala yeniden başlatma gerekir, benim şimdiki sertifikası işaret (s) nginxBen sadece yeni (yenilenmiş) Ehliyet için noktaya bunlar değiştirmeye olsaydı? Alternatifler var mı?

Yanıtlar:


26

Evet, yenilenen sertifikaların doğru son kullanma tarihini görüntülemesi için Nginx'i yeniden yüklemeniz gerekeceğinden eminim, ancak basit bir önbellek temizliği ve göz atması bunu görüntülemenize izin vermelidir.

Ya da cli'yi tercih ederseniz, her zaman eski güvenilir OpenSSL komutunu kullanabilirsiniz:

echo | openssl s_client -connect your.domain.com:443 | openssl x509 -noout -dates

Bu size sertifikadaki güncel tarihleri ​​verir. Senin durumunda liman 443 yerine 80 olur.

Çoğu zaman nginx -s reloadbeklendiği gibi çalışmıyor. Birçok sistemde (Debian, vb.) Kullanmanız gerekir /etc/init.d/nginx reload.

Diğerleri başarısız olursa, doğrudan doğrudan yapılandırma dosyasını belirleyebilirsiniz nginx -c /path/to/nginx.conf.


Hata! Bu dinleyiciler 443 numaralı liman için olmalıydı. Neyse, büyük cevap için teşekkürler!
Haravikk

8
nginx reloadve Nginx’in yeniden başlatılması iki farklı şeydir: reloadNginx’i yeniden başlatmaz, ancak yalnızca SIGHUP sinyali gönderir. SIGHUP sinyali yeterli mi?
porton

11
Evet. SIGHUP göndermek nginx'in güncellenmiş sertifikaya geçmesine neden olur.
rspeed

Emrindeki işlev nedir echo |? Dışarıda bırakırsam, geri bildirim alamıyorum. Bunun için çıktısını notAfteralıp, o anki tarihe göre karşılaştırmak istiyorum, sertifika süresi dolmadan birkaç gün önce kendimi spam yapmak istiyorum.
Amedee Van Gasse

@AmedeeVanGasse echoboru, OpenSSL kabuğunun temiz bir şekilde Bash'e geri çıkmasını ve çıktının normal şekilde geri dönmesini sağlar. Bu, betiklerde temiz bir çıkış için ve planladığınız gibi anlaşıldığı gibi otomasyon amacıyla bu gereklidir. Aynı temel işlevselliği kullanarak planladığınız gibi çok sayıda komut dosyası uyguladım.
rubynorails 18

21

SIGHUPNginx alındığında güncellenmiş konfigürasyonu yeniden yükler, log dosyalarını açarken ve SSL sertifikalarını okurken doğrulayın ve daha sonra önceki konfigürasyona dayanarak çalışan işlemleri inceleyin.

Nginx bazı SSL sertifikaları okuyamazsa, daha eski yapılandırma kullanarak çalışmaya devam edeceğim. Aksi taktirde, config dosyalarınıza ne yaparsanız yapın istekleri işlemeye ve işlemeye devam edecektir. Kırılmış olsalar bile web siteleriniz açılacaktır.

Bu yüzden evet, nginx'in yeniden başlatılması gerekmiyor ve nginx'in güncellenmiş sertifikaları görmesini istiyorsanız sunucunuzu birkaç saniyeden daha uzun süre çevrimdışı duruma getirme riskiniz yok. Şun için yeterli olmalı:

sudo service nginx reload

Varsayılan olarak kullanılan systemd içeren çoğu geçerli dağıtımda, aşağıdaki komutu kullanarak nginx'i yeniden yükleyebilirsiniz:

sudo systemctl reload nginx

3
On Ubuntu 16 , CentOS 7 ve diğer sistemlere destek systemdde yürütebilirsiniz sudo systemctl reload nginx(ki sudo service nginx reloadyukarıda bahsedilen diğer ad olarak).
Ville

@Ville haklısın, ama hatırlanması gereken bir komut daha; ve orada her yerde systemd yok
sanmai

Yapmayı seviyorum service nginx restart. Ne kadar hızlı tamamlandığını görmekten asla bıkmam. Ancak, eğer bir cron işindeyse ve hiçbirini görmeyeceğim, devam eden herhangi bir kalıcı oturumdan veya devam etmekte olan herhangi bir işlemden kaçınmak için bir tür yeniden yükleme yapmayı tercih ederim.
Rolf,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.