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


33

그래서 다음과 같은 서버 정의로 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경우 새 인증서를 가리 키도록 간단히 변경 하려면 다시 시작해야 합니까? 대안이 있습니까?

답변:


26

예, 갱신 된 인증서가 올바른 만료 날짜를 표시하려면 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.


얘들 아, 그 청취는 포트 443을위한 것이어야한다, 나의 나쁜! 어쨌든 큰 답변 주셔서 감사합니다!
하라 빅

8
nginx reloadNginx를 다시 시작하는 것은 서로 다른 두 가지입니다. reloadNginx를 다시 시작하지 않고 SIGHUP 신호 만 보냅니다. SIGHUP 신호가 충분합니까?
porton

11
예. SIGHUP을 보내면 nginx가 업데이트 된 인증서로 전환됩니다.
rspeed

echo |명령에서 기능은 무엇입니까 ? 그대로두면 프롬프트가 표시되지 않습니다. notAfter인증서가 만료되기 며칠 전에 출력을 grep하고 현재 날짜와 비교하여 자신을 스팸으로 만들고 싶습니다 .
Amedee Van Gasse

@AmedeeVanGasse echo파이프는 OpenSSL 셸을 Bash로 깨끗하게 다시 종료하고 출력을 정상적으로 반환합니다. 스크립트에서 사용하기 위해 깔끔하게 종료하고 계획 한 것처럼 들리는 자동화 목적을 위해 필요합니다. 동일한 기본 기능을 사용하려는 스크립트와 같은 수많은 스크립트를 구현했습니다.
rubynorails

21

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

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

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

sudo service nginx reload

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

sudo systemctl reload nginx

3
우분투 16 , CentOS는 7 과 다른 시스템지지 systemd또한 실행할 수있다 sudo systemctl reload nginx(이는 sudo service nginx reload상술 한 별명된다).
Ville

@Ville 당신 말이 맞지만 기억해야 할 또 하나의 명령입니다.
어디에도 시스템

나는 사랑한다 service nginx restart. 나는 그것이 얼마나 빨리 완료되는지 보는 것에 지치지 않습니다. 그러나 그것이 cron 작업에 있고 어떤 것도 보지 못할 경우 지속적인 세션을 중단하거나 진행중인 보류중인 작업을 피하기 위해 일종의 다시로드를하고 싶습니다.
Rolf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.