izin nginx ditolak ke file sertifikat untuk konfigurasi ssl


25

Saya menginstal proxy nginx ssl di server Fedora saya.

Saya telah membuat pasangan sertifikat dan kunci di bawah / etc / nginx. Mereka terlihat seperti ini:

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

...

Sebagai root, saya mencoba memulai layanan nginx:

systemctl start nginx.service

Saya mendapatkan kesalahan berikut:

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

Apakah ada yang salah dengan izin pada file-file ini?


Itu menyebutkan rantai sertifikat ... bukankah masalah dengan otoritas sertifikasi kunci demo.crt itu? Atau sertifikat yang ditandatangani sendiri? By the way, saya tidak berpikir file kunci harus dapat dibaca oleh dunia. Nginx harus membukanya sebagai root dan kemudian memberikan hak istimewa kepada pengguna apa pun yang menjalankannya.
Aleš Krajník

Itu ditandatangani sendiri, ya. Saya akan mengubah kepemilikan, terima kasih.
numb3rs1x

Anda menganggap masalahnya ada pada sertifikat, tetapi pesan kesalahan berlaku untuk file konfigurasi untuk Nginx.
bbaassssiiee

Jawaban:


39

Anda mungkin memiliki SELinux dalam mode menegakkan (default untuk Fedora):

sestatus -v

Jika demikian, periksa log audit, Anda harus menemukan kesalahan akses:

ausearch -m avc -ts today | audit2allow

Anda juga mungkin memindahkan arsip alih-alih menyalinnya, sehingga konteks keamanan file mungkin salah.

ls -lrtZ /etc/nginx/demo.* 

dan perbaiki jika perlu:

restorecon -v -R /etc/nginx

Terima kasih banyak. Saya mengikuti instruksi Anda dan saya tidak lagi mendapatkan kesalahan. Saya kebetulan memindahkan file-file ini dari direktori tempat saya membuatnya. Saya dapat membuatnya di direktori yang sama lain kali. Selain itu, bagaimana saya mencegah hal ini terjadi di masa depan?
numb3rs1x

Untuk kasus penggunaan khusus ini, gunakan cpalih-alih mvdan pelajari cara menggunakan auditsistem untuk mencari penolakan AVC.
dawud

Penelitian aus | perintah audit2allow. Apakah itu menambahkan beberapa izin ke selinux atau hanya untuk mengonfirmasi bahwa selinux adalah masalahnya?
numb3rs1x

Itu hanya untuk mengkonfirmasi. Baca halaman manual masing-masing untuk detailnya.
dawud

4
Wow terima kasih! Ada baiknya memiliki jawaban yang bukan hanya 'menonaktifkan SELinux'.
BCran

7

Saya kira itu SELinux yang menolak izin. Periksa konteks SELinux mereka. Milik mereka harus httpd_config_t. Jika tidak, jalankan

restorecon /etc/nginx/demo.*

atau

chcon httpd_config_t /etc/nginx/demo.*

sebagai root.

Anda dapat memeriksa log di bawah / var / log / audit / untuk melihat apakah itu SELinux yang menolak izin. Anda juga bisa berlari

setenforce 0

untuk mengatur SELinux ke mode permisif . Dengan cara ini, SELinux masih menghasilkan pesan AVC (di / var / log / audit /) tetapi mengizinkan akses.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.