Saya mengkonfigurasi SSL untuk Apache 2
. Sistem saya adalah Ubuntu Server 10.04 LTS
. Saya memiliki pengaturan berikut yang terkait dengan SSL di konfigurasi vhost saya:
SSLEngine On
SSLCertificateKeyFile /etc/ssl/private/server.insecure.key
SSLCertificateFile /etc/ssl/certs/portal.selfsigned.crt
(Catatan: Saya menggunakan .insecure
file kunci karena file tersebut tidak dilindungi frasa sandi, dan saya ingin melihat dengan jelas bahwa itu adalah file kunci tidak aman)
Jadi, ketika saya me-restart apache saya mendapatkan pesan berikut:
Syntax error on line 39 of /etc/apache2/sites-enabled/500-portal-https:
SSLCertificateKeyFile: file '/etc/ssl/private/server.insecure.key' does not exist or is empty
Error in syntax. Not restarting.
Tetapi file itu ada di sana, dan tidak kosong (sebenarnya itu berisi kunci pribadi):
sudo ls -l /etc/ssl/private/server.insecure.key
-rw-r----- 1 root www-data 887 2012-08-07 15:14 /etc/ssl/private/server.insecure.key
sudo ls -ld /etc/ssl/private/
drwx--x--- 2 root www-data 4096 2012-08-07 13:02 /etc/ssl/private/
Saya telah mencoba mengubah kepemilikan, menggunakan dua grup www-data dan ssl-cert. Saya tidak yakin mana yang benar di Ubuntu: secara default Ubuntu menggunakan ssl-cert, tetapi di sisi lain proses apache berjalan dengan data-pengguna www: dimulai oleh root pengguna, tetapi perubahan pada data-www di beberapa titik, dan saya tidak yakin kapan sertifikat dibaca.
Tapi bagaimanapun, mengubah pemilik grup belum memperbaiki situasi. Pertanyaan saya adalah:
- Apa lagi yang bisa saya coba agar ini berfungsi?
- Bagaimana saya bisa memverifikasi bahwa keyfile saya adalah keyfile yang valid?
- Bagaimana saya bisa memverifikasi bahwa file kunci dan sertifikat (
/etc/ssl/certs/portal.selfsigned.crt
) bekerja bersama?
Saya pikir Apache memberikan pesan kesalahan yang menyesatkan, dan saya ingin menunjukkan kesalahannya.
sumber
service apache2 restart
alih-alih**sudo** service apache2 restart
... note to self:sudo make me a sandwich fool
Jawaban:
Saya menemukan kesalahan. Itu karena saya menggunakan skrip untuk mengatur sertifikat, dan salah satu langkah yang saya lakukan adalah
apache2ctl configtest
. Kesalahan datang dari perintah ini, dan bukan dari apache restart, yang merupakan hal yang menyesatkan saya. Karena saya menjalankan perintah apache2ctl sebagai pengguna normal, itu tidak memiliki akses ke keyfiles, dan dengan demikian pesan kesalahan.Facit: pastikan semua perintah apache Anda dijalankan dengan sudo, bahkan yang hanya ditujukan untuk verifikasi sintaks (
apache2ctl
), karena mereka juga memerlukan akses ke kunci.sumber
Saya juga menerima pesannya
sementara
/path/to/file
ada dan memiliki izin yang tepat, hanya karena SELinux dihidupkan dan file ini tidak dapat diakses untuk pengguna apache.Ini terlihat seperti ini:
Untuk memperbaiki ini, saya menjalankan
sudo restorecon -Rv /etc/pki/tls/certs/
- itu akan memperbaiki properti SELinux untuk file masalah.sumber
sudo: restorecon: command not found
restorecon
adalah bagian daripolicycoreutils
paket. Anda juga mungkin tidak memiliki SELinux sama sekali?Saya sudah melakukan ini dan itu membantu saya di CentOS 5.7
sumber
Saya menerima pesan serupa:
SSLCertificateChainFile: file '/opt/bitnami/apache2/conf/DigiCertCA.crt\xe2\x80\x9d' does not exist or is empty
Masalah saya adalah editor teks yang saya gunakan menempatkan "kutipan benar" ascii 148 bukannya kutipan ganda normal ascii 34; menggunakan editor unix-type (mis. TextWrangler) masukkan kutipan yang benar dan perbaiki masalahnya.
sumber
Izin salah, tetapi menurut jawaban Anda itu bukan penyebab masalah:
drwx--x--- 2 root www-data 4096 2012-08-07 13:02 /etc/ssl/private/
/ etc / ssl / private biasanya milik grup ssl-cert pada sistem berbasis debian.
Hanya melihat perm 0710 dan bertanya-tanya untuk apa itu digunakan.
sumber