quyền nginx bị từ chối đối với các tệp chứng chỉ cho cấu hình ssl


25

Tôi đang cài đặt proxy ssl nginx trên máy chủ Fedora của mình.

Tôi đã tạo một cặp chứng chỉ và khóa dưới / etc / nginx. Họ trông như thế này:

ls -l /etc/nginx/
total 84
...
-rw-r--r--. 1 root root 1346 Sep 20 12:11 demo.crt
-rw-r--r--. 1 root root 1679 Sep 20 12:11 demo.key

...

Là root, tôi đang cố gắng bắt đầu dịch vụ nginx:

systemctl start nginx.service

Tôi nhận được lỗi sau đây:

nginx[30854]: nginx: [emerg]
SSL_CTX_use_certificate_chain_file("/etc/nginx/demo.crt") failed (SSL: error:0200100D:system     library:fopen:Permission denied...e:system lib)
nginx[30854]: nginx: configuration file /etc/nginx/nginx.conf test failed

Có điều gì sai với các quyền trên các tập tin này?


Nó đề cập đến chuỗi chứng chỉ ... không phải là vấn đề với cơ quan chứng nhận của khóa demo.crt đó sao? Hay là chứng chỉ tự ký? Nhân tiện, tôi không nghĩ rằng tập tin chính nên được đọc bởi thế giới. Nginx nên mở nó dưới quyền root và sau đó thả đặc quyền cho bất kỳ người dùng nào mà nó chạy.
Aleš Krajník

Đó là tự ký, vâng. Tôi sẽ thay đổi quyền sở hữu, cảm ơn.
numb3rs1x

Bạn cho rằng sự cố xảy ra với các chứng chỉ, nhưng thông báo lỗi áp dụng cho tệp cấu hình cho Nginx.
bbaassssiiee

Câu trả lời:


39

Bạn có thể có SELinux trong chế độ thực thi (mặc định cho Fedora):

sestatus -v

Nếu đây là trường hợp, kiểm tra nhật ký kiểm toán, bạn sẽ tìm thấy lỗi truy cập:

ausearch -m avc -ts today | audit2allow

Bạn cũng có thể đã di chuyển tệp thay vì sao chép nó, vì vậy bối cảnh bảo mật của tệp có thể sai.

ls -lrtZ /etc/nginx/demo.* 

và sửa nó nếu cần:

restorecon -v -R /etc/nginx

Cảm ơn nhiều. Tôi đã làm theo hướng dẫn của bạn và tôi không còn nhận được lỗi. Tôi đã tình cờ di chuyển các tập tin này từ thư mục mà tôi đã tạo chúng. Tôi có thể tạo chúng trong cùng một thư mục vào lần tới. Ngoài ra, làm thế nào để tôi ngăn chặn điều này xảy ra trong tương lai?
numb3rs1x

Đối với trường hợp sử dụng cụ thể này, hãy sử dụng cpthay vì mvvà tìm hiểu cách sử dụng audithệ thống để tìm kiếm từ chối AVC.
dawud

Các nghiên cứu | lệnh Aud2allow. Có phải điều đó đã thêm một số quyền vào selinux hay chỉ để xác nhận rằng selinux có vấn đề?
numb3rs1x

Đó chỉ là để xác nhận. Đọc các trang hướng dẫn tương ứng của họ để biết chi tiết.
dawud

4
Ồ cảm ơn nhé! Thật tốt khi có một câu trả lời không chỉ là 'vô hiệu hóa SELinux'.
BCran

7

Tôi đoán đó là TỰ TIN mà từ chối sự cho phép. Kiểm tra bối cảnh SELinux của họ. Của họ nên là httpd_config_t. Nếu không, hãy chạy

restorecon /etc/nginx/demo.*

hoặc là

chcon httpd_config_t /etc/nginx/demo.*

làm gốc.

Bạn có thể kiểm tra nhật ký trong / var / log / aud / để xem liệu đó có phải là TỰ TIN không cho phép hay không. Bạn cũng có thể chạy

setenforce 0

để đặt SELinux vào chế độ cho phép . Bằng cách này, SELinux vẫn tạo các thông điệp AVC (trong / var / log / aud /) nhưng cho phép truy cập.

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.