No Ubuntu, parece que o melhor lugar para uma chave privada usada para assinar um certificado (para uso pelo nginx) é /etc/ssl/private/
Esta resposta acrescenta que o certificado deve entrar, /etc/ssl/certs/
mas parece um local inseguro. Os .crt
arquivos precisam ser mantidos em segurança ou são considerados públicos?
ssl
ssl-certificate
openssl
Adam Nelson
fonte
fonte
.crt
lo em um outdoor da Times Square, se quiser.Respostas:
O arquivo .crt é enviado para tudo o que se conecta; é público. (
chown root:root
echmod 644
)Para adicionar ao local da chave privada; assegure-se de protegê-lo adequadamente e de tê-lo lá. (
chown root:ssl-cert
echmod 640
)fonte
ssl-cert
, usado para, talvez entre outras coisas, criar certificados auto-assinados de snakeoilRealmente não importa onde você os coloca, desde que proteja adequadamente seus arquivos de chave privada . O certificado público é público; nenhuma proteção é necessária - privilégios de servidor ou outros.
Para expandir a resposta, não uso o local padrão
/etc/ssl
.É mais fácil manter todo o meu em uma área separada devido a backups e outros motivos.
Para o Apache SSL, eu mantenho o meu na
/etc/apache2/ssl/private
"área raiz" ou similar/etc/
.Exemplo de configuração
Esta publicação é voltada para o Ubuntu (Debian) + Apache, mas deve funcionar na maioria dos sistemas -
basta aplicar as permissões e atualizar o local / caminho na configuração fornecida (apache / nginx / etc).
Se os arquivos de chave SSL estiverem protegidos corretamente (diretório e arquivos), você ficará bem. Observe as notas!
Crie diretórios:
Nota:
chmod 710
suportassl-cert
grupo no Ubuntu. (Ver comentários)permissão Definir a
700
na/etc/apache2/ssl/private
também irá funcionar bem.Coloque arquivos SSL:
Proprietário do conjunto:
Nota:
Se você não possui um grupo ssl-cert , use 'root: root' na linha acima ou pule a segunda linha.
Defina permissões:
Certificados públicos
Chave (s) privada (s)
Nota:
A permissão do grupo está definida como READ (640) devido ao grupo ssl-cert do Ubuntu. '600' também é bom.
Ativar o módulo SSL do Apache
Edite todos os arquivos do site Apache e ative
(ver último parágrafo) *
Reinicie o serviço Apache2
ou
Feito. Teste seu novo site SSL.
* Novamente, isso vai além da questão, mas você pode copiar o arquivo de configuração do site SSL Apache padrão (
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/mysiteexample-ssl.conf
) como um bom ponto de partida / exemplo de diretivas / diretórios padrão normalmente usados em um arquivo 'conf' simples (Ubuntu / Debian) Apache / SSL . Normalmente, ele aponta para um certificado SSL autoassinado + chave (snakeoil), pacotes CA, bem como diretrizes comuns usadas para um determinado site SSL.Após copiar, edite o novo arquivo .conf e adicione / remova / atualize-o conforme necessário com as novas informações / caminhos acima e execute
sudo a2ensite mysiteexample-ssl
para habilitá-lo.fonte
<VirtualHost *:443>
seçãosites-available/mysite.conf
deve incluir os certificados da seguinte forma:SSLEngine on
SSLCertificateFile /etc/apache2/ssl/mysite.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/mysite.key
Todas as respostas aqui parecem boas, mas quero mencionar uma coisa que achei ser um problema ... Se você precisar concatenar seu certificado com intermediários ou raízes para criar um arquivo em cadeia, não o coloque
/etc/ssl/certs
, porque quandoc_rehash
for executado, ele pode criar links simbólicos de hash para seus certificados devido às raízes ou intermediários neles.Depois, mais tarde, se seus certificados expiraram e você os remove, e não sabe executar novamente
c_rehash
, você pode ter quebrado links simbólicos de hash em seu/etc/ssl/certs
diretório e coisas estranhas começam a acontecer quando sua máquina local tenta se conectar a si mesma através SSL e não consegue encontrar as raízes para validar. Por exemplo, com o curl, de repente comecei a receber:Pouco depois de limpar alguns arquivos .crt e concatenados .pem antigos que eu tinha
/etc/ssl/certs
.Armazenar pelo menos suas cadeias em outro lugar evita esse problema. Acabei fazendo um
/etc/ssl/local_certs
para segurar meus certificados e correntes, para que eles não se perdessem na bagunça dos certificados da CA que você encontrará em/etc/ssl/certs
fonte
Não há realmente um lugar inseguro se a permissão para o diretório / arquivo individual estiver configurada para algo como
chown root :0 private.key
echmod 600 private.key
para que somente o root possa lê-lo. CSRs e arquivos de certificado são menos sensíveis, como você diz.Com essas permissões, os caminhos mencionados e / usr / local / ssl devem estar bem.
fonte
Os locais estão corretos:
/etc/ssl/certs/
para.crt
arquivo/etc/ssl/private
para.key
arquivoO proprietário deve ser
root:root
para ambos (usesudo chmod root:root <file>
para alterar, se necessário).Permissões :
644
para.crt
arquivo600
para.key
arquivoIsso irá funcionar
nginx
.fonte