Não consigo configurar SSL. Eu pesquisei no Google e encontrei algumas soluções, mas nenhuma delas funcionou para mim. Eu preciso de ajuda, por favor...
Aqui está o erro que recebo quando tento reiniciar o nginx:
root@s17925268:~# service nginx restart
Restarting nginx: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/ssl/ssl.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: configuration file /etc/nginx/nginx.conf test failed
Meu certificado é da StartSSL e é válido por 1 ano.
Aqui está o que testei:
- O certificado e a chave privada não têm espaços à direita.
- Não estou usando o arquivo server.key padrão.
- Verifiquei o nginx.conf e as diretivas estão apontando para a chave privada e o certificado corretos.
Eu também verifiquei o módulo e obtive um módulo diferente para a chave e o certificado.
Obrigado pela ajuda. :)
modulus' and the
porções do expoente público na chave e no certificado devem corresponder. Sem dúvida, os arquivos são diferentes. A chave é gerada para um certificado particular.Depois de estabelecer que eles não correspondem, você ainda tem um problema - o que fazer a respeito. Freqüentemente, o certificado pode simplesmente ser montado incorretamente. Quando uma CA assina seu certificado, eles enviam a você um bloco que se parece com
eles também enviarão um pacote (geralmente dois certificados) que representa sua autoridade para conceder um certificado a você. isso vai se parecer com algo como
exceto que, infelizmente, eles não serão identificados de forma tão clara.
uma prática comum, então, é agrupar tudo isso em um arquivo - o seu certificado, depois os certificados de assinatura. Mas, uma vez que não são facilmente distinguidos, às vezes acontece que alguém os coloca acidentalmente na outra ordem - assinando certificados, depois o certificado final - sem perceber. Nesse caso, seu certificado não corresponderá à sua chave.
Você pode testar para ver o que o certificado pensa que representa executando
Próximo ao topo, você deverá ver "Assunto:" e outras coisas que se parecem com seus dados. Se, em vez disso, ele se parecer com sua CA, seu pacote provavelmente está na ordem errada; você pode tentar fazer um backup e mover o último certificado para o início, esperando que seja esse o seu certificado.
Se isso não funcionar, talvez você precise reemitir o certificado. Quando eu faço um CSR, gosto de rotular claramente para qual servidor ele se destina (em vez de apenas ssl.key ou server.key) e faço uma cópia dele com a data no nome, como mydomain.20150306.key etc. é improvável que os pares de chaves privadas e públicas se misturem com outro conjunto.
fonte
Verifique um hash MD5 da chave pública para garantir que corresponde ao que está em uma chave privada
fonte
Tive esse problema porque estava adicionando o pacote e o certificado na ordem errada, então talvez isso pudesse ajudar outra pessoa.
Antes (o que está errado):
Depois (o que é certo)
E não se esqueça de atualizar o conf apropriado (ssl_certificate agora deve apontar para o crt encadeado) como
De manual nginx :
fonte
Se isso acontecer e você estiver usando o Let's Encrypt / certbot, é provável que você tenha usado em
chain.pem
vez defullchain.pem
.Deve ser algo assim:
Consulte a documentação do certbot “Onde estão meus certificados?”
fonte
Eu tive o mesmo problema e finalmente resolvi alterando a ordem dos blocos pem no arquivo de certificado.
O bloco certificado deve ser colocado no início do arquivo, em seguida nos blocos intermediários e, em seguida, no bloco raiz.
Percebi esse problema comparando um arquivo de certificado problemático com um arquivo de certificado em funcionamento.
fonte
Meus 5 centavos sobre o assunto:
Eu tive o mesmo problema. Após cerca de 1 hora cuidando dele, descobri que colei o certificado incorretamente.
Se você tiver um erro como este, verifique seu certificado.
fonte
No meu caso, queria mudar o certificado SSL, porque mudei meu servidor, então tive que criar um novo CSR com este comando:
Enviei o arquivo mysite.csr para o provedor SSL da empresa e depois de receber o certificado crt, reiniciei o nginx e recebi este erro
Depois de muita investigação, o erro era que o módulo do arquivo de chave não era o mesmo do arquivo crt
Então, para fazer funcionar, criei um novo arquivo csr, mas tenho que mudar o nome do arquivo com este comando
Então recebi um novo arquivo crt do provedor da empresa, reinicie o nginx e funcionou.
fonte
Isso também pode acontecer quando sua CA emite um certificado intermediário
Encontrei este problema (duas vezes) com o nginx e nenhuma das soluções neste post explicou o problema. A postagem do blog aqui por um cavalheiro legal chamado Marco acertou em cheio, e eu estou colando aqui para qualquer um que também topar com o que eu estava vendo. https://medium.com/@mrkdsgn/steps-to-install-a-go-daddy-ssl-certificate-on-nginx-on-ubuntu-14-04-ff942b9fd7ff
No meu caso, go-daddy era o CA e isso é específico para a forma como eles emitem o cert e os bundles de cert intermediários.
Aqui está o trecho da postagem do blog de Marco
Com o Nginx, se sua CA incluiu um certificado intermediário, você deve criar um único arquivo de certificado em cadeia que contenha seu certificado e os certificados intermediários da CA.
Você pode usar este comando para criar um arquivo combinado chamado example.com.chained.crt:
cat example.com.crt intermediate.crt > example.com.chained.crt
fonte
No meu caso, o problema é que crio sertificados sem inserir nenhum dado na interface CLI. Quando eu regenerei os certificados e inseri todos os campos: Cidade, Estado, etc., tudo ficou bem.
fonte
Aconteceu comigo quando combinei o bundle.crt e o cert principal. O motivo foi que copiei o certificado principal abaixo de bundle.crt. Deveria ser o contrário
1 / cert principal 2 / bundle.crt
fonte
Para Nginx:
openssl req -newkey rsa:2048 -nodes -keyout domain.com.key -out domain.com.csr
Arquivo
domain_com.crt
edomain_com.ca-bundle
arquivos SSL e , em seguida, copie o novo arquivo e coledomain.com.chained.crt
.3: Adicionar arquivos nginx:
ssl_certificate /home/user/domain_ssl/domain.com.chained.crt;
ssl_certificate_key /home/user/domain_ssl/domain.com.key;
Lates reinicie o Nginx.
fonte
Este erro pode ocorrer quando a chave privada do certificado (
ssl_certificate_key
por exemplo,.key
ou.pem
arquivo) não corresponde ao arquivo de certificado público (ssl_certificate
) em sua configuração Nginx (checknginx.conf
ou insites-enabled/
). Certifique-se de que os dois arquivos são correspondentes.Verifique os logs de erros do Nginx para obter mais detalhes (por exemplo
/var/log/nginx/error.log
).fonte
No meu caso tenho que concatenar os certs do meu domínio.
E no arquivo de configuração /etc/nginx/nginx.conf
Reinicie o serviço e tudo ok.
Fonte da etapa 2: https://www.namecheap.com/support/knowledgebase/article.aspx/9781/2238/nginx-ssl-error0b080074x509-certificate-routines-x509checkprivatekeykey-values-mismatch
fonte