สิทธิ์ nginx ถูกปฏิเสธไปยังไฟล์ใบรับรองสำหรับการกำหนดค่า ssl


25

ฉันกำลังติดตั้งพร็อกซี nginx ssl บนเซิร์ฟเวอร์ Fedora ของฉัน

ฉันได้สร้างคู่คีย์และใบรับรองภายใต้ / etc / nginx พวกเขามีลักษณะเช่นนี้:

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

...

ในฐานะที่เป็น root ฉันพยายามเริ่มบริการ nginx:

systemctl start nginx.service

ฉันได้รับข้อผิดพลาดต่อไปนี้:

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

มีบางอย่างผิดปกติในการอนุญาตไฟล์เหล่านี้หรือไม่


ระบุถึงห่วงโซ่ใบรับรอง ... ไม่ใช่ปัญหาของหน่วยงานออกใบรับรองของคีย์ demo.crt นั้นใช่ไหม หรือว่าเป็นใบรับรองแบบลงนามด้วยตนเอง ยังไงก็ตามฉันไม่คิดว่าไฟล์สำคัญควรอ่านได้ในโลกนี้ Nginx ควรเปิดเป็น root แล้วปล่อยสิทธิ์ให้ผู้ใช้ทุกคนที่ทำงาน
AlešKrajník

มันเซ็นชื่อด้วยตัวเองใช่ ฉันจะเปลี่ยนความเป็นเจ้าของขอบคุณ
numb3rs1x

คุณถือว่าปัญหาเกิดขึ้นกับใบรับรอง แต่ข้อความแสดงข้อผิดพลาดจะใช้กับไฟล์การกำหนดค่าสำหรับ Nginx
bbaassssiiee

คำตอบ:


39

คุณอาจมี SELinux ในโหมดบังคับใช้ (ค่าเริ่มต้นสำหรับ Fedora):

sestatus -v

หากเป็นกรณีนี้ให้ตรวจสอบบันทึกการตรวจสอบคุณควรพบข้อผิดพลาดการเข้าถึง:

ausearch -m avc -ts today | audit2allow

คุณอาจย้ายไฟล์ที่เก็บไว้แทนการคัดลอกดังนั้นบริบทความปลอดภัยของไฟล์อาจผิด

ls -lrtZ /etc/nginx/demo.* 

และแก้ไขหากจำเป็น:

restorecon -v -R /etc/nginx

ขอบคุณมาก. ฉันทำตามคำแนะนำของคุณแล้วและฉันไม่พบข้อผิดพลาดอีก ฉันบังเอิญย้ายไฟล์เหล่านี้จากไดเรกทอรีที่ฉันสร้างไฟล์ขึ้นมา ฉันสามารถสร้างพวกเขาในไดเรกทอรีเดียวกันในครั้งต่อไป นอกจากนั้นฉันจะป้องกันไม่ให้สิ่งนี้เกิดขึ้นในอนาคตได้อย่างไร
numb3rs1x

สำหรับกรณีการใช้งานเฉพาะนี้ให้ใช้cpแทนmvและเรียนรู้การใช้auditระบบเพื่อค้นหาการปฏิเสธ AVC
dawud

ausearch | คำสั่ง audit2allow นั่นเป็นการเพิ่มการอนุญาตให้ selinux หรือว่าเป็นการยืนยันว่า selinux เป็นปัญหาหรือไม่?
numb3rs1x

มันเป็นเพียงการยืนยัน อ่านหน้าคู่มือของพวกเขาสำหรับรายละเอียด
dawud

4
ว้าวขอบคุณ! เป็นการดีที่จะได้รับคำตอบที่ไม่เพียง 'ปิดการใช้งาน SELinux'
BCran

7

ฉันคิดว่ามันเป็น SELinux ที่ปฏิเสธการอนุญาต ตรวจสอบบริบทของ SELinux พวกเขาควรจะ httpd_config_t ถ้าไม่ทำงาน

restorecon /etc/nginx/demo.*

หรือ

chcon httpd_config_t /etc/nginx/demo.*

ในฐานะที่เป็นราก

คุณสามารถตรวจสอบบันทึกภายใต้ / var / log / audit / เพื่อดูว่าเป็น SELinux ที่ปฏิเสธสิทธิ์หรือไม่ คุณยังสามารถเรียกใช้

setenforce 0

เพื่อ SELinux ชุดเข้าสู่โหมดการอนุญาต ด้วยวิธีนี้ SELinux ยังคงสร้างข้อความ AVC (ใน / var / log / audit /) แต่อนุญาตการเข้าถึง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.