Apache: SSLCertificateKeyFile: ไฟล์ไม่มีอยู่หรือว่างเปล่า


32

ฉันกำลังกำหนดค่า SSL Apache 2สำหรับ Ubuntu Server 10.04 LTSระบบของฉันคือ ฉันมีการตั้งค่าต่อไปนี้เกี่ยวข้องกับ SSL ในการกำหนดค่า vhost ของฉัน:

SSLEngine On
SSLCertificateKeyFile /etc/ssl/private/server.insecure.key
SSLCertificateFile    /etc/ssl/certs/portal.selfsigned.crt

(หมายเหตุด้านข้าง: ฉันใช้.insecureไฟล์คีย์เนื่องจากไฟล์ไม่ได้รับการป้องกันวลีรหัสผ่านและฉันต้องการเห็นอย่างชัดเจนว่าเป็นไฟล์คีย์ที่ไม่ปลอดภัย)

ดังนั้นเมื่อฉันเริ่ม apache ฉันได้รับข้อความต่อไปนี้:

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.

แต่ไฟล์อยู่ที่นั่นและไม่ว่างเปล่า (จริง ๆ แล้วมันมีไพรเวตคีย์):

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/

ฉันลองเปลี่ยนความเป็นเจ้าของโดยใช้สองกลุ่ม www-data และ ssl-cert ฉันไม่แน่ใจว่าอันไหนที่ถูกต้องใน Ubuntu: โดยค่าเริ่มต้น Ubuntu ใช้ ssl-cert แต่ในทางกลับกันกระบวนการ apache ที่ทำงานกับผู้ใช้ www-data: มันเริ่มต้นโดยผู้ใช้ root แต่เปลี่ยนเป็น www-data ในบางส่วน ชี้ไปและฉันไม่แน่ใจว่าเมื่อใดจะอ่านใบรับรอง

แต่อย่างไรก็ตามการเปลี่ยนเจ้าของกลุ่มยังไม่ได้ปรับปรุงสถานการณ์ คำถามของฉันคือ:

  1. ฉันจะลองทำอะไรได้อีกบ้าง
  2. ฉันจะตรวจสอบว่า keyfile ของฉันเป็น keyfile ที่ถูกต้องได้อย่างไร
  3. ฉันจะตรวจสอบว่า keyfile และใบรับรอง ( /etc/ssl/certs/portal.selfsigned.crt) ทำงานร่วมกันได้อย่างไร

ฉันคิดว่า Apache ให้ข้อความแสดงข้อผิดพลาดที่ทำให้เข้าใจผิดและฉันต้องการระบุข้อผิดพลาด


สวัสดีคุณสามารถทำเครื่องหมายคำถามนี้เป็นคำตอบได้ไหม

2
ฉันควรชี้ให้เห็นว่าฉันได้รับข้อความแสดงข้อผิดพลาดจากข้อผิดพลาดพื้นฐานของการทำงานservice apache2 restartแทน**sudo** service apache2 restart... หมายเหตุถึงตัวเอง:sudo make me a sandwich fool
icc97

ฉันพบว่าบทความต่อไปนี้มีประโยชน์มาก ฉันไม่สามารถตั้งค่าระบบด้วยชุดข้อความนี้ digitalocean.com/community/tutorials/…
Hertz

คำตอบ:


36

ฉันพบข้อผิดพลาด apache2ctl configtestมันเป็นเพราะผมใช้สคริปต์เพื่อติดตั้งใบรับรองและเป็นหนึ่งในขั้นตอนที่ผมกำลังดำเนินการคือ ข้อผิดพลาดมาจากคำสั่งนี้และไม่ใช่จากการรีสตาร์ท apache ซึ่งเป็นสิ่งที่ทำให้ฉันเข้าใจผิด ตั้งแต่ฉันรันคำสั่ง apache2ctl ในฐานะผู้ใช้ปกติมันไม่สามารถเข้าถึงไฟล์คีย์และทำให้ข้อความแสดงข้อผิดพลาด

Facit: ตรวจสอบให้แน่ใจว่าคำสั่ง apache ทั้งหมดของคุณรันด้วย sudo แม้คำสั่งนั้นมีไว้สำหรับการตรวจสอบความถูกต้องทางไวยากรณ์ ( apache2ctl) เนื่องจากพวกเขาจำเป็นต้องเข้าถึงคีย์


8

ฉันยังได้รับข้อความ

SSLCertificateKeyFile: file '/path/to/file' does not exist or is empty

ในขณะที่/path/to/fileมีอยู่และมีสิทธิ์ที่ถูกต้องเพียงเพราะ SELinux เปิดใช้งานและไฟล์นี้ไม่สามารถเข้าถึงได้สำหรับผู้ใช้ apache

ดูเหมือนว่านี้:

$ sudo ls -laZ /etc/pki/tls/certs/
drwxr-xr-x. root root system_u:object_r:cert_t:s0      .
drwxr-xr-x. root root system_u:object_r:cert_t:s0      ..
-rw-------. root root unconfined_u:object_r:cert_t:s0  this-one-works.crt
-rw-------. root root unconfined_u:object_r:admin_home_t:s0 this-one-is-unaccessable.crt

ในการแก้ไขปัญหานี้ฉันเรียกใช้sudo restorecon -Rv /etc/pki/tls/certs/- มันจะซ่อมแซมคุณสมบัติ SELinux สำหรับไฟล์ปัญหา


มันช่วยฉันสำหรับ certs ที่ไม่ได้สร้างขึ้นบนเซิร์ฟเวอร์นั้น แต่อัปโหลดจากแหล่งอื่น ๆ
tymik

2
sudo: restorecon: command not found
Francisco Corrales Morales

@FranciscoCorralesMorales restoreconเป็นส่วนหนึ่งของpolicycoreutilsแพ็คเกจ นอกจากนี้คุณอาจไม่มี SELinux เลยใช่ไหม
AntonioK

6

ฉันทำสิ่งนี้แล้วและช่วยฉันใน CentOS 5.7

server:~ # chcon -t cert_t /etc/pki/tls/private/my.key 
server:~ # ls -laZ /etc/pki/tls/private/

1

ฉันได้รับข้อความที่คล้ายกัน:

SSLCertificateChainFile: file '/opt/bitnami/apache2/conf/DigiCertCA.crt\xe2\x80\x9d' does not exist or is empty

ปัญหาของฉันคือเครื่องมือแก้ไขข้อความที่ฉันใช้อยู่ "คำพูดที่ถูกต้อง" ascii 148 แทนที่จะเป็นเครื่องหมายคำพูดคู่ปกติ ascii 34; ใช้ตัวแก้ไขชนิด unix (เช่น TextWrangler) ใส่ในเครื่องหมายคำพูดที่ถูกต้องและแก้ไขปัญหา


0

สิทธิ์ไม่ถูกต้อง แต่ตามคำตอบของคุณนั่นไม่ใช่สาเหตุของปัญหา:

drwx--x--- 2 root www-data 4096 2012-08-07 13:02 /etc/ssl/private/

/ etc / ssl / private มักจะเป็นของกลุ่ม ssl-cert ในระบบที่ใช้เดเบียน

เพิ่งสังเกตเห็น 0710 perms และสงสัยว่ามันสามารถใช้สำหรับ


คุณน่าจะถูกอย่างน้อยควรเป็นอย่างน้อย 0750 ฉันได้ลองทำสิ่งต่าง ๆ และสถานะที่ฉันโพสต์นั้นอาจไม่ถูกต้องที่สุด การเรียกใช้ apache2ctl ในฐานะรูทช่วยแก้ไขปัญหาของฉันได้อย่างแน่นอน
dangonfast

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