A inicialização do Nginx falha ssl nenhum arquivo ou diretório

11

Aqui está o erro que estou recebendo:

Reloading nginx configuration: nginx: [emerg] SSL_CTX_use_certificate_chain_file("/path/to/cert.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory error:20074002:BIO routines:FILE_CTRL:system lib error:140DC002:SSL routines:SSL_CTX_use_certificate_chain_file:system lib) nginx: configuration file /etc/nginx/nginx.conf test failed

Tenho 100% de certeza de que o arquivo está nesse local, mas o Nginx parece achar que não está lá. Eu mesclei o domain.crt e o intermediate.crt manualmente nessa ordem. Eu estive coçando minha cabeça por todo esse dia todo. Espero que alguém tenha visto este erro e tenha uma solução. (E uma nota lateral não é um erro ao colar que a localização do arquivo é mostrada apenas uma vez e não novamente após 'nenhum arquivo ou diretório').

    
por tgoza 09.09.2013 / 00:13

4 respostas

13

Tem certeza de que o usuário do Nginx tem acesso ao diretório?

Verifique também as permissões do arquivo .pem , se o Nginx não puder acessá-lo, ele poderá ser exibido como 'no such file or directory' .

Se as permissões estiverem corretas, você poderá verificar o caminho real novamente. Como você colou (que eu sei que você removeu o dir) não há início / , que poderia ser o problema.

EDITAR

Tente mover sua configuração SSL para a seguinte estrutura (além de alterar o nginx.conf para refletir):

sudo mkdir /etc/nginx/ssl
sudo chown -R root:root /etc/nginx/ssl
sudo chmod -R 600 /etc/nginx/ssl

O Nginx pode estar com falha no seu .pem porque as permissões são muito abertas (precisa de fonte para verificar se o Nginx faz isso), mas a configuração acima deve funcionar bem.

    
por 09.09.2013 / 02:27
3

Vou deixar a minha resposta para o meu problema, caso alguém se deparar com este tópico.

Eu tenho nginx executado dentro do contêiner docker e tenho o mesmo erro ao tentar acessar o arquivo de chave privada. Depois de coçar a cabeça por várias horas, percebo que o nginx do meu docker não tem o volume de montagem que contém meus dados.

A única opção para adicionar o volume de montagem é remover e recriar o contêiner com a opção -v : link

docker run -d -P --name docker-nginx -v /etc/ssl/certs:/etc/ssl/certs nginx

Às vezes, coisas triviais são difíceis de ver. Espero que esta ajuda.

    
por 21.02.2017 / 05:12
2

Um cenário possível:

às vezes, pode acontecer que, ao configurar arquivos SSL (chave privada e certificado) para o Virtualhost que está sendo configurado, tenha sido esquecido especificar o caminho absoluto onde esses arquivos residem.

Por exemplo, se você seguir este documento oficial do Nginx: link

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     tdmssl.crt;
    ssl_certificate_key tdmssl.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ...
}

Suponha que você armazene os arquivos SSL dentro de " /etc/nginx/conf.d ":

root@ilg40:/etc/nginx/conf.d# pwd
/etc/nginx/conf.d
root@ilg40:/etc/nginx/conf.d# ll
total 16
drwxr-xr-x 2 root root 4096 Jan 24 17:39 ./
drwxr-xr-x 5 root root 4096 Jan 24 21:15 ../
-rw-r--r-- 1 root root 1359 Jan 24 17:39 tdmssl.crt
-rw-r--r-- 1 root root 1675 Jan 24 17:39 tdmssl.key

O que acontece?

Por padrão, quando não especificado o caminho absoluto para um arquivo comum que é usado pelo Nginx, o Nginx irá procurar os arquivos em "/ etc / nginx"

De /var/log/nginx/error.log

2017/01/24 21:05:10 [emerg] 13113#0: 
BIO_new_file("/etc/nginx/tdmssl.crt") 
failed(SSL:error:02001002:system library:fopen:
No such file or directory:fopen('/etc/nginx/tdmssl.crt','r') 
error:2006D080:BIO routines:BIO_new_file:no such file)

O que deve ser feito?

Para especificar o caminho absoluto dos arquivos adicionais que são usados pela configuração do Virtualhost.

Assim:

root@ilg40:/etc/nginx/conf.d# cd
root@ilg40:~# cat /etc/nginx/sites-available/tdm 
server {

    listen          443 ssl;
    server_name         tjsdatamanager.redtjs.com;
    ssl_certificate     /etc/nginx/conf.d/tdmssl.crt;
    ssl_certificate_key /etc/nginx/conf.d/tdmssl.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        include proxy_params;
        proxy_pass http://unix:/etc/tdm/flask/wsgi.sock;
    }

}
    
por 24.01.2017 / 22:55
-1

Eu tive o mesmo problema. Eu tive que mudar o / etc / nginx / sites-enabled / default & arquivos default.save que foram adicionados automaticamente ao meu nome de site sem o domínio .com após o processo de configuração, QUAL FOI O PROBLEMA DA MINHA INSTÂNCIA . Para mantê-lo curto, essas duas linhas precisavam ser alteradas em meu / etc / nginx / sites-enabled / default. Observe que este arquivo é exibido com um ícone de atalho no meu sistema de arquivos, mas consegui clicar com o botão direito do mouse no arquivo e editá-lo com a opção "Editar / Editor interno".

HTTPS - solicitações de proxy para solicitações locais de proxy do Node.js no # local - para o aplicativo Node.js local: servidor {         ouça 443;         nome_servidor switchmagic.com;

    ssl on;
    # Use certificate and key provided by Let's Encrypt:
    ssl_certificate /etc/letsencrypt/live/switchmagic.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/switchmagic.com/privkey.pem;

Quando eu passei pelos arquivos e adicionei o .com, que é a convenção de nomenclatura que eu usei para adicionar o arquivo, às referências switchmagic nos diretórios de arquivo que estavam lançando os erros, tudo estava bem! Eu encontrei muitos Devs fazendo a mesma pergunta, então eu queria lançar minha solução para ajudar, já que as respostas que encontrei eram principalmente sobre permissões de root, mas permissões de root não eram o problema no meu caso. Rock on Devs.

    
por 29.04.2017 / 08:41