Estou tentando configurar uma conexão segura (https) no nginx.
Mas estou um pouco preocupado com as permissões da chave privada, que não são mencionadas em nenhum tutorial.
Devo mudá-los? Para quê?
Estou tentando configurar uma conexão segura (https) no nginx.
Mas estou um pouco preocupado com as permissões da chave privada, que não são mencionadas em nenhum tutorial.
Devo mudá-los? Para quê?
Respostas:
As chaves privadas devem ter uma leitura fortemente restrita. Definir permissões 600
como pertencentes a elas root
deve funcionar. No entanto, existem outras configurações de permissões seguras - o Ubuntu armazena chaves em um diretório com proprietário, root
grupo ssl-cert
e permissões 710
. Isso significa que apenas membros de ssl-cert
podem acessar qualquer arquivo nesse diretório. As chaves privadas têm grupo ssl-cert
, proprietárioroot
e permissões 640
.
Tive um problema ao obter a configuração do nginx e me deparei com essa pergunta. A outra resposta aqui já respondeu diretamente à pergunta, mas achei que um pouco mais de informação seria útil.
Normalmente, o nginx é iniciado como root
usuário por init scripts / systemd. No entanto, o nginx também pode mudar para um usuário menos privilegiado para operações normais. Então, minha pergunta foi: qual usuário é usado para carregar o certificado / chave ssl? O usuário privilegiado inicial ou aquele para o qual você mudou?
Felizmente, o nginx usa as permissões iniciais para ler o certificado e a chave na memória antes de trocar de usuário. Portanto, normalmente, você realmente pode deixar as chaves com permissões muito restritas, pois elas são carregadas pelo nginx quando ele ainda está sendo executado como root
.
O problema que eu estava enfrentando e que me trouxe aqui foi que eu estava definindo ssl_certificate
apenas nos meus server
quarteirões nginx.conf
. Eu estava recebendo erros como [error] 18606#18606: *311 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking
quando sabia muito bem que minhas chaves estavam no lugar certo. Essa questão era que eu não tinha um ssl_certificate
no http
nível de nginx.conf
.
Espero que isso seja útil para alguém.
nginx
grupo. O servidor da web poderá usá-los mesmo que sejam legíveis apenas porroot
(como deveriam ser).