Khởi động Nginx không ssl không có tệp hoặc thư mục như vậy


14

Đây là lỗi tôi nhận được:

Đang tải lại cấu hình nginx: nginx: [nổi lên] lỗi lib: 140DC002: Các thường trình SSL: SSL_CTX_use_cert ve_chain_file: system lib) nginx: tệp cấu hình /etc/nginx/nginx.conf thử nghiệm thất bại

Tôi chắc chắn 100% rằng tập tin nằm ở vị trí đó nhưng dường như Nginx nghĩ rằng nó không có ở đó. Tôi đã hợp nhất domain.crtintermediate.crtthủ công theo thứ tự đó. Tôi đã gãi đầu về điều này cả ngày. Tôi hy vọng ai đó đã thấy lỗi này và có giải pháp. (Và một lưu ý phụ không phải là lỗi khi dán vị trí tệp chỉ hiển thị một lần và không lặp lại sau 'không có tệp hoặc thư mục như vậy').


3
path/to/cert.pemchắc chắn không phải là một địa điểm hợp lệ
Michael Hampton

Bạn đúng khi cho rằng đó không phải là con đường thực tế. Tuy nhiên tôi có thể dễ dàng biến nó thành một phần hợp lệ của địa điểm. Nhưng dù bằng cách nào tôi cũng không thể cung cấp cho bạn thông tin cụ thể vì công ty đang thực hiện. Tôi phải bỏ tên người dùng.
tgoza

Câu trả lời:


15

Bạn có chắc chắn rằng người dùng Nginx có quyền truy cập vào thư mục?

Đồng thời kiểm tra các quyền của .pemtệp, nếu Nginx không thể truy cập tệp, nó có thể hiển thị dưới dạng 'no such file or directory'.

Nếu quyền là đúng, bạn có thể kiểm tra lại đường dẫn thực tế. Làm thế nào bạn dán nó (mà tôi biết bạn đã xóa thư mục) không có sự khởi đầu /nào có thể là vấn đề.

BIÊN TẬP

Hãy thử chuyển thiết lập SSL của bạn sang cấu trúc sau (cũng như thay đổi nginx.confđể phản ánh):

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

Nginx có thể thất bại với bạn .pemvì các quyền quá mở (cần nguồn để xác minh rằng Nginx thực hiện việc này) nhưng thiết lập ở trên sẽ hoạt động tốt.


Tôi đã kiểm tra lại đường dẫn và nó có chứa /phần đầu nên tôi đã thay đổi câu hỏi để phản ánh điều đó. Tệp được đặt tại /home/user/subdirsvà tất cả các quyền của tệp và thư mục trong đó được sở hữu bởi user.www-data (tên người dùng. Tên nhóm) và 775 bộ. Và tôi nghĩ rằng nginx có quyền truy cập vào bất cứ thứ gì thuộc sở hữu của dữ liệu www, mặc dù tôi có thể bị nhầm lẫn.
tgoza

Luôn luôn là những sai lầm đơn giản cần phải tìm ra mãi mãi :) Rất vui vì bạn đã giải quyết được.
Jim W.

Làm thế nào mà nó trông chính xác? Tôi có tài khoản của tôi $root/keys/để dòng chứng chỉ của tôi trông giống như ssl_certificate keys/cert.pem... họ có phải ở trong webroot không?
ngôi sao sáng

Sử dụng đường dẫn tuyệt đối đã lừa
ngôi sao sáng

Tôi đã sử dụng một docker-container và đã gặp phải vấn đề này mỗi khi tôi tạo lại container. thêm chmod -R 600 /etc/nginx/sslvào điểm vào của tôi giải quyết vấn đề nhờ
Dimitri Kopriwa

3

Tôi sẽ để lại câu trả lời cho vấn đề của mình, trong trường hợp ai đó đi qua chủ đề này.

Tôi có nginx chạy bên trong container docker và gặp lỗi tương tự khi cố truy cập tệp khóa riêng. Sau khi gãi đầu trong vài giờ, tôi nhận ra rằng nginx của docker của tôi không có khối lượng gắn kết có chứa dữ liệu của tôi.

Tùy chọn duy nhất để thêm khối lượng gắn kết là xóa và tạo lại vùng chứa với -vtùy chọn: https://docs.docker.com/engine/tutorials/dockervolume/

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

Đôi khi, những điều tầm thường là khó nhìn thấy. Hy vọng điều này giúp đỡ.


2

Một kịch bản có thể xảy ra:

đôi khi có thể xảy ra rằng, khi định cấu hình tệp SSL (khóa riêng và chứng chỉ) cho Virtualhost đang được định cấu hình, người ta đã quên chỉ định đường dẫn tuyệt đối nơi các tệp này nằm.

Ví dụ: nếu bạn theo dõi tài liệu chính thức này từ Nginx: 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;
    ...
}

Giả sử bạn lưu trữ các tệp SSL bên trong " /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

Chuyện gì xảy ra

Theo mặc định, khi không chỉ định đường dẫn tuyệt đối cho một tệp thông thường được sử dụng bởi Nginx, Nginx sẽ tìm kiếm các tệp tại "/ etc / nginx"

Từ /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)

Phải làm gì đây?

Để chỉ định đường dẫn tuyệt đối của các tệp bổ sung được sử dụng bởi cấu hình Virtualhost của bạn.

Như thế này:

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

Tôi gặp vấn đề tương tự. Tôi đã phải thay đổi các tập tin / etc / nginx / sites-enable / default & default.save được tự động thêm tên trang web của tôi mà không có tên .com sau quá trình thiết lập, VÌ SAO LÀ VẤN ĐỀ TRONG VIỆC CỦA TÔI . Để giữ cho nó ngắn gọn, hai dòng này cần phải được thay đổi trong / etc / nginx / site-enable / default của tôi. Xin lưu ý rằng tệp này được hiển thị với biểu tượng phím tắt trong hệ thống tệp của tôi nhưng tôi có thể nhấp chuột phải vào tệp và chỉnh sửa tệp bằng tùy chọn "Chỉnh sửa / Trình chỉnh sửa nội bộ".

HTTPS - yêu cầu proxy trên Node.js cục bộ ap # HTTPS - yêu cầu proxy trên ứng dụng Node.js cục bộ: server {nghe 443; server_name 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;

Khi tôi duyệt qua các tệp và thêm .com, đó là quy ước đặt tên mà tôi đã sử dụng để thêm tệp, vào các tham chiếu chuyển đổi trong các thư mục tệp bị lỗi, tất cả đều ổn! Tôi đã tìm thấy rất nhiều Dev hỏi cùng một câu hỏi vì vậy tôi muốn ném giải pháp của mình ra đó để giúp đỡ vì câu trả lời tôi tìm thấy chủ yếu là về quyền root, nhưng quyền root không phải là vấn đề trong trường hợp của tôi. Đá trên Devs.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.