Nginx başlangıcı ssl başarısız böyle bir dosya veya dizin yok


14

İşte hata alıyorum:

Nginx yapılandırmasını yeniden yükleme: nginx: [ortaya çıktı] SSL_CTX_use_certificate_chain_file ("/ path / to / cert.pem") başarısız oldu (SSL: hata: 02001002: sistem kütüphanesi: fopen: Böyle bir dosya veya dizin hatası yok: 20074002: BIO rutinleri: FILE_CTRL: system lib hatası: 140DC002: SSL rutinleri: SSL_CTX_use_certificate_chain_file: sistem lib) nginx: yapılandırma dosyası /etc/nginx/nginx.conf testi başarısız oldu

Dosyanın bu konumda olduğundan% 100 eminim ama Nginx orada olmadığını düşünüyor. Ben birleşti domain.crtve intermediate.crtbu sırayla el. Bütün gün başımı kaşıyorum. Umarım birisi bu hatayı görmüş ve bir çözüme sahiptir. (Ve bir yan not, dosya konumunun sadece bir kez gösterildiğini ve 'böyle bir dosya veya dizin yok' dan sonra tekrar gösterilmediğini yapıştırmada bir hata değildir).


3
path/to/cert.pemkesinlikle geçerli bir yer değil .
Michael Hampton

Bunun gerçek yol olmadığını varsaymak doğru. Ancak ben kolayca konumu geçerli bir parçası haline getirebiliriz. Ama her iki durumda da bunun yapıldığı şirket yüzünden size bilgi veremiyorum. Kullanıcı adını dışarıda bırakmak zorundayım.
tgoza

Yanıtlar:


15

Nginx kullanıcısının dizine erişimi olduğundan emin misiniz?

Ayrıca .pemdosyanın izinlerini kontrol edin , eğer Nginx ona erişemezse, olarak gösterebilir 'no such file or directory'.

İzinler doğruysa, gerçek yolu tekrar kontrol edebilirsiniz. Nasıl yapıştırdığınızı (ki direncini çıkardığınızı biliyorum) /, sorun olabilecek bir başlangıç ​​yoktur .

DÜZENLE

SSL kurulumunuzu aşağıdaki yapıya taşımayı deneyin ( nginx.confve yansıtacak şekilde değiştirin ):

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

.pemİzinler çok açık olduğu için Nginx başarısız olabilir (Nginx'in bunu yaptığını doğrulamak için kaynağa ihtiyaç duyarsınız), ancak yukarıdaki kurulum iyi çalışmalıdır.


Yolu iki kez kontrol ettim ve /başlangıçta içerdiği için soruyu değiştirmek için soruyu değiştirdim. Dosyada bulunur /home/user/subdirsve içindeki tüm dosya ve dizin izinleri user.www-data (kullanıcıadı.grup adı) ve 775 kümesine aittir. Ve sanırım nginx, www-data'ya ait olan herhangi bir şeye erişebilir, ancak yanılmış olabilirim.
tgoza

Her zaman anlamaya sonsuza dek süren basit hatalar :) Sevindim işe yaradı.
Jim W.

tam olarak nasıl görünüyordu? $root/keys/Benim madem var, bu yüzden sertifika hattım ssl_certificate keys/cert.pem... webrootta olmalılar mı?
parlak yıldız

Mutlak yollar kullanmak hile yaptı.
parlak yıldız

Bir liman işçisi konteyneri kullanıyordum ve konteyneri her yeniden oluşturduğumda bu konuyu vuruyordum. chmod -R 600 /etc/nginx/sslbenim giriş
noktasında

3

Birisi bu konuyla karşılaşırsa, sorunum için cevabımı bırakacağım.

Docker kapsayıcısı içinde nginx çalıştırmak ve özel anahtar dosyasına erişmeye çalışırken aynı hata var. Başımı birkaç saat çizdikten sonra, docker'ımın nginx'inin verilerimi içeren bağlama hacmine sahip olmadığının farkına varıyorum.

Montaj hacmi eklemek için tek seçenek, kapsayıcıyı kaldırmak ve yeniden oluşturmaktır -v: https://docs.docker.com/engine/tutorials/dockervolumes/

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

Bazen önemsiz şeyleri görmek zordur. Umarım bu yardım.


2

Olası bir senaryo:

bazen yapılandırılmakta olan Virtualhost için SSL dosyalarını (özel anahtar ve sertifika) yapılandırırken, bu dosyaların bulunduğu mutlak yolu belirtmesi unutulmuş olabilir.

Örneğin, bu resmi dokümanı Nginx'ten takip ederseniz: http://nginx.org/en/docs/http/configuring_https_servers.html

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;
    ...
}

SSL dosyalarını " /etc/nginx/conf.d " içinde sakladığınızı varsayalım :

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

Ne oluyor?

Varsayılan olarak, Nginx tarafından kullanılan sıradan bir dosyanın mutlak yolu belirtilmediğinde, Nginx "/ etc / nginx" konumundaki dosyaları arayacaktır.

/Var/log/nginx/error.log sitesinden

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)

Ne yapılmalı?

Virtualhost yapılandırmanız tarafından kullanılan ek dosyaların mutlak yolunu belirtmek için.

Bunun gibi:

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;
    }

}

-1

Aynı sorunu yaşadım. / Etc / nginx / sites-etkin / default & default.save değiştirmek zorunda kaldım kurulum işlemi sırasında sonra .com olmadan site adımı otomatik olarak ekledi dosyaları , SORUNUMDA SORUNU . Kısa tutmak için, bu iki satırın / etc / nginx / sites etkin / varsayılan ayarımda değiştirilmesi gerekiyordu. Bu dosyanın dosya sistemimde bir kısayol simgesiyle görüntülendiğini, ancak dosyayı sağ tıklayıp "Düzenle / Dahili Düzenleyici" seçeneğiyle düzenleyebildiğimi lütfen unutmayın.

HTTPS - yerel Node.js için proxy istekleri ap # HTTPS - yerel Node.js uygulaması için proxy istekleri: server {listen 443; sunucu_adı 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;

Dosyaları inceledim ve dosyayı eklemek için kullandığım adlandırma kuralı olan .com'u eklediğimde, hatalar atılan dosya dizinlerindeki switchmagic referanslara her şey yolundaydı! Aynı soruyu soran bir sürü Devs buldum, bu yüzden bulduğum cevaplar çoğunlukla kök izinleriyle ilgili olduğu için çözümümü oraya atmak istedim, ancak kök izinler benim durumumda sorun değildi. Devs üzerinde Rock.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.