Hoje, estou configurando o SSL para o meu domínio e resolvi outro problema - esperava que alguém pudesse lançar alguma luz ..
Continuo recebendo as seguintes mensagens de erro:
[erro] Init: Não foi possível ler o certificado do servidor do arquivo /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt [error] Erro da biblioteca SSL: 218529960 erro: 0D0680A8: rotinas de codificação asn1: ASN1_CHECK_TLEN: tag incorreta [erro] Erro na biblioteca SSL: erro 218595386: 0D07803A: rotinas de codificação asn1: ASN1_ITEM_EX_D2I: erro asn1 aninhado
Estou executando o Apache 2.2.16 e o Ubuntu 10.10. Meu arquivo .crt possui as tags Begin e End e foi copiado exatamente do e-mail de confirmação que recebi, muito frustrante!
Felicidades!
Editar >> Ao tentar verificar o .crt Não parece funcionar:
>> openssl x509 -noout -text -in domain.com.crt incapaz de carregar o certificado 16851: erro: 0906D06C: rotinas PEM: PEM_read_bio: nenhuma linha de partida: pem_lib.c: 650: Esperando: CERTIFICADO CONFIÁVEL
Também >>
>> openssl x509 -text -informa PEM -in domain.com.crt incapaz de carregar o certificado 21321: erro: 0906D06C: rotinas PEM: PEM_read_bio: nenhuma linha de partida: pem_lib.c: 650: Esperando: CERTIFICADO CONFIÁVEL
>> openssl x509 -text -forma DER em domain.com.crt incapaz de carregar o certificado 21325: erro: 0D0680A8: rotinas de codificação asn1: ASN1_CHECK_TLEN: etiqueta incorreta: tasn_dec.c: 1316: 21325: erro: 0D07803A: rotinas de codificação asn1: ASN1_ITEM_EX_D2I: erro asn1 aninhado: tasn_dec.c: 380: Type = X509
Edit >> (Aplausos pela ajuda, por sinal)
>> grep '^ -----' domain.com.crt ----- COMEÇAR CERTIFICADO ----- ----- TERMINAR CERTIFICADO -----
Acabei de enviar um e-mail à empresa fornecedora do certificado, eles responderam>
Verifiquei o arquivo CSR que você forneceu e posso garantir que isso foi gerado corretamente. O erro que você está encontrando no momento é causado porque você está usando uma linha de comando errada para instalar o CSR. Você precisará modificar este domain.com.crt na sua linha de comando com o nome correspondente do seu domínio.
- atualmente o crt está configurado para mysite.com.crt - usei domain.com.crt como exemplo
fonte
grep '^-----' domain.com.crt
?Respostas:
É possível que as linhas sejam ^ M-terminadas? Esse é um problema em potencial ao mover arquivos dos sistemas Windows para UNIX. Uma maneira fácil de verificar é usar
vi
no modo "mostre-me o binário", comvi -b /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt
.Se cada linha terminar com um controle-M, assim
você tem um arquivo no formato terminado por linha do Windows e o apache não os ama.
Suas opções incluem mover o arquivo novamente, tendo mais cuidado; ou usando o
dos2unix
comando para remover esses; você também pode removê-los dentro do vi, se tiver cuidado.Edit : graças a @ dave_thompson_085, que salienta que esta resposta não se aplica mais em 2019. Ou seja, o Apache / OpenSSL agora são tolerantes a ^ linhas terminadas em M, para que não causem problemas. Dito isto, outros erros de formatação, vários exemplos diferentes dos que aparecem nos comentários, ainda podem causar problemas; verifique cuidadosamente se o certificado foi movido pelos sistemas.
fonte
-----BE
... Obrigado pela inspiração para verificar!Para quem chega a esta página com um erro semelhante ao tentar ler uma Solicitação de assinatura de certificado (CSR) (observe que o OP está lendo um certificado): certifique-se de usar o comando OpenSSL correto.
x509
é para certificados ereq
é para CSRs:vs
fonte
Simplesmente dei voltas e voltas em círculos sobre isso, e aconteceu que eu tinha os certificados no caminho errado - por exemplo
ao invés de:
Algo para verificar se você está recebendo esse erro.
fonte
Eu suspeito que você tenha um problema com o formato do certificado.
Execute os dois comandos a seguir e nos dê a saída:
fonte
No meu caso, descobri que meu certificado tinha caracteres "-" diferentes. Deve ter havido um problema de copiar / colar do administrador que colocou o certificado no servidor, substituindo o editor de texto - por um caractere unicode especial ao longo do caminho.
Isso levou horas para diagnosticar e, no final, eu adivinhei, editou o certificado no vi e excluiu os caracteres "-" existentes e os redigitou.
Espero que isso ajude alguém.
fonte
No meu caso, encontrei os erros do OP porque quem criou o arquivo .crt para mim realmente criou um arquivo formatado .PEM e o nomeou .crt.
Descobri isso executando o seguinte guia útil: https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how -para convertê-los
tudo o que eu precisava fazer era renomear meu .crt para .pem, e estava pronto! O guia indicou que os erros da pergunta do OP implicam que o arquivo de entrada já esteja no formato PEM, portanto, tentar convertê-lo em .pem a partir de um formato DER não pode ser feito e é de fato desnecessário.
fonte
Verifique se o arquivo não possui espaços à direita ou à esquerda no arquivo de certificado. Verifique cuidadosamente se não há espaços ou espaços em branco no seu arquivo de certificado, selecionando o texto inteiro e procurando espaços em branco em um editor somente de texto.
Verifique também se todos os arquivos configurados existem e estão corretos.
Por exemplo: em sua outra postagem, você diz que seu arquivo .key é nomeado como meu domínio.com.crt, enquanto na configuração do vhost você tem domínio.com.crt
Verifique novamente se todos os arquivos acima realmente existem e são válidos.
fonte
--
em–
; isso não foi muito divertido de solucionar.sudo openssl x509 -noout -text -in domain.com.crt unable to load certificate 16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE
-----BEGIN CERTIFICATE-----
e a última linha termina com-----END CERTIFICATE-----
?Caso alguém encontre esse problema e os logs de erro do apache digam algo como:
Init: Não foi possível ler o certificado do servidor no arquivo /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt
Verifique se você não trocou seus arquivos de chave e certificado nas declarações na configuração do apache. Eu apontei a chave para o meu arquivo de certificado e o certificado para o meu arquivo de chave. Este post me ajudou a descobrir o problema, mas eu queria apontá-lo como outro possível problema / solução.
fonte
Meu problema (com o mesmo erro ao instalar um novo servidor com Apache 2.4) era que o Apache (2.4) não conseguia ler o arquivo .crt binário. Eu o importei no meu repositório de certificados pessoais (com mmc) e o exportei como X.509 codificado em base 64 (.cer). Renomeei o arquivo exportado para o mesmo nome (.crt) (usado no meu httpd-ssl.conf) e funcionou novamente! O mesmo certificado funcionou no meu servidor antigo, talvez o Apache 2.4 seja mais rigoroso que o 2.2? Boa sorte.
fonte
No meu caso, isso tem a ver com a lista técnica estar presente no arquivo. Pode-se despir assim:
Não tenho certeza se sempre leva 3 bytes, então a melhor maneira deve ser:
fonte
Eu recebi o mesmo erro porque mudei .key com nomes de arquivos .crt
fonte
Eu tive um problema semelhante quando acidentalmente usei um certificado IIS do tipo p7b fornecido pelo cliente na configuração do apache. A conversão do certificado para o formato x509 corrigiu o erro. Ambos os tipos têm a mesma aparência na superfície, mas aparentemente são diferentes por dentro.
fonte
Eu tive esse problema porque me foi enviado o conteúdo de um arquivo .p7b no estilo IIS colado em um email. Possui as tags "----- BEGIN CERTIFICATE -----" e "----- END CERTIFICATE -----", assim como .pem, e o conteúdo usa uma codificação base64 de aparência semelhante. Eu o convertei para um arquivo * .pem da seguinte forma:
Depois disso, o Apache 2.2 ficou feliz.
fonte
Recentemente, tive esse problema usando o Lets Encrypt (letsencrypt) no Windows. O certificado voltou codificado como UTF-16LE. Convertê-lo em UTF-8 (usando dos2unix) resolveu o problema.
fonte
No meu caso, eram apenas as linhas vazias. Quando colei o arquivo crt do ntepad ou do bloco de notas ++ no nano sempre ficava como
remover os espaços vazios e colocar tudo em uma linha resolveu o problema.
fonte