보안 인증서를 갱신하면 Nginx를 다시 시작해야합니까? example.org; root

그래서 다음과 같은 서버 정의로 SSL을 활성화하여 nginx 서버를 설정하고 있습니다.

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;

    ...
}

당신은 아이디어를 얻습니다 (오타를 용서하십시오).

어쨌든, 내가 궁금한 것은; 인증서를 갱신하면 nginx를 다시 시작하지 않고도 인증서를 설치할 수 있습니까?

예를 들어 /path/to/public/certificate/path/to/private/key에서 현재 인증서를 가리키는 및 에서 기호 링크를 사용하는 nginx경우 새 인증서를 가리 키도록 간단히 변경 하려면 다시 시작해야 합니까? 대안이 있습니까?



답변

예, 갱신 된 인증서가 올바른 만료 날짜를 표시하려면 Nginx를 다시로드해야한다고 확신하지만 간단한 캐시 지우기 및 찾아보기를 통해이를 볼 수 있습니다.

또는 cli를 선호하는 경우 항상 이전의 신뢰할 수있는 OpenSSL 명령을 사용할 수 있습니다.

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

그러면 인증서의 현재 날짜가 표시됩니다. 귀하의 경우 포트는 443 대신 80입니다.

여러 번 nginx -s reload예상대로 작동하지 않습니다. 많은 시스템 (데비안 등)에서는을 사용해야 /etc/init.d/nginx reload합니다.

다른 방법으로 모두 실패하면 언제든지 구성 파일을 직접 지정할 수 있습니다 nginx -c /path/to/nginx.conf.


답변

SIGHUPnginx를 수신 하면 업데이트 된 구성을 다시로드 하고 로그 파일을 열고 SSL 인증서를 읽는 동안 구성을 확인한 다음 이전 구성에 의존하는 작업자 프로세스를 정상적으로 종료합니다.

nginx가 일부 SSL 인증서를 읽을 수없는 경우 이전 구성을 계속 사용합니다. 그렇지 않으면 구성 파일에 대한 작업에 관계없이 계속 작동하고 요청을 처리합니다. 파손 된 경우에도 웹 사이트는 계속 열립니다.

따라서 예, nginx를 다시 시작할 필요가 없으며 nginx가 업데이트 된 인증서를 보려면 몇 초 이상 서버를 오프라인 상태로 만들 위험이 있습니다. 다음과 같이 충분해야합니다.

sudo service nginx reload

systemd가 기본적으로 사용되는 대부분의 현재 배포판에서 다음 명령을 사용하여 nginx를 다시로드 할 수도 있습니다.

sudo systemctl reload nginx