배경
재구성을 위해 실행 중인 nginx 기본 프로세스에 SIGHUP이 전송되면 nginx(특히 openssl 라이브러리)는 로그에 표시된 대로 비밀번호로 암호화된 인증서 키가 있는지 묻습니다.
Enter PEM pass phrase:
입력 핸들이 없으므로 이는 즉시 실패하고 다시 로드도 실패하게 됩니다.
질문
nginx가 비밀번호를 요청하고 입력할 때 알 수 있는 편리한 방법이 있나요?
아이디어
ssl_password_file
지시어는 디스크에 흔적을 남기므로 옵션이 아닙니다.- nginx를 다른 상위 프로세스로 래핑하고 포그라운드에서 실행하는 것이 더 좋지만 이로 인해 nginx에 약간의 불안정성이 추가될까 걱정됩니다.
- 그래서 나는 그것을 해결하기 위해 어떤 리눅스 메커니즘을 사용하는 것이 가장 좋다고 생각합니다. 어쩌면 명명된 파이프일까요? 하지만 명명된 파이프에는 Nginx의 참여가 필요하다고 생각합니다.
답변1
이 목적을 위한 지시문이 있습니다. 다음을 사용하여 파일에 저장된 줄로 구분된 암호 목록을 사용하도록 NGINX를 구성할 수 있습니다.ssl_password_file. .
http {
server { server_name <fqdn|ip>;
ssl_certificate_key <pem_key>;
ssl_password_file <path_to_passphrase>
}
그런 다음 구성을 다시 로드합니다.
sudo nginx -s reload
귀하의 비밀번호 파일은 루트 사용자만 읽을 수 있다는 점에 유의하십시오. 공격자가 귀하의 비밀번호를 알아내면 보안 위반이 발생할 수도 있습니다.
답변2
내 생각에는 Hashicorp Vault(https://www.nginx.com/blog/protecting-ssl-private-keys-nginx-hashicorp-vault/) 또는 대안.