Permissões para chave SSL?

15

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ê?

ChocoDeveloper
fonte

Respostas:

15

As chaves privadas devem ter uma leitura fortemente restrita. Definir permissões 600como pertencentes a elas rootdeve funcionar. No entanto, existem outras configurações de permissões seguras - o Ubuntu armazena chaves em um diretório com proprietário, rootgrupo ssl-certe permissões 710. Isso significa que apenas membros de ssl-certpodem acessar qualquer arquivo nesse diretório. As chaves privadas têm grupo ssl-cert, proprietárioroot e permissões 640.

cpast
fonte
2
Acrescentarei, por especificidade: Ao usar o nginx no CentOS 7, não é necessário tornar o certificado ou a chave privada legível por aqueles do nginxgrupo. O servidor da web poderá usá-los mesmo que sejam legíveis apenas por root(como deveriam ser).
3

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 rootusuá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_certificateapenas nos meus serverquarteirõ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 handshakingquando sabia muito bem que minhas chaves estavam no lugar certo. Essa questão era que eu não tinha um ssl_certificateno httpnível de nginx.conf.

Espero que isso seja útil para alguém.

Cameron Tacklind
fonte