Apache: SSLCertertKeyFile: tệp không tồn tại hoặc trống


33

Tôi đang cấu hình SSL cho Apache 2. Hệ thống của tôi là Ubuntu Server 10.04 LTS. Tôi có các cài đặt sau liên quan đến SSL trong cấu hình vhost của mình:

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

(Lưu ý bên: Tôi đang sử dụng .insecurecho tệp khóa vì tệp không được bảo vệ bằng cụm mật khẩu và tôi muốn thấy rõ rằng đó là tệp khóa không an toàn)

Vì vậy, khi tôi khởi động lại apache, tôi nhận được thông báo sau:

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.

Nhưng tập tin ở đó và không trống (thực ra nó chứa khóa riêng):

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/

Tôi đã thử thay đổi quyền sở hữu, sử dụng hai nhóm dữ liệu www và ssl-cert. Tôi không chắc cái nào đúng trong Ubuntu: mặc định Ubuntu sử dụng ssl-cert, nhưng mặt khác, các quy trình apache chạy với dữ liệu www của người dùng: nó được khởi động bởi người dùng root, nhưng một số thay đổi thành dữ liệu www điểm, và tôi không chắc chắn khi nào các chứng chỉ được đọc.

Nhưng dù sao, việc thay đổi chủ nhóm vẫn không cải thiện được tình hình. Câu hỏi của tôi là:

  1. Những gì khác tôi có thể cố gắng để làm việc này?
  2. Làm cách nào để xác minh rằng keyfile của tôi là một keyfile hợp lệ?
  3. Làm cách nào để xác minh rằng keyfile và chứng chỉ ( /etc/ssl/certs/portal.selfsigned.crt) hoạt động cùng nhau?

Tôi nghĩ rằng Apache đang đưa ra một thông báo lỗi sai và tôi muốn xác định lỗi.


Xin chào, bạn có thể đánh dấu câu hỏi này là câu trả lời?

2
Tôi nên chỉ ra rằng tôi đã nhận được thông báo lỗi này từ lỗi cơ bản của việc chạy service apache2 restartthay vì **sudo** service apache2 restart... ghi chú cho bản thân:sudo make me a sandwich fool
icc97

Tôi thấy bài viết sau đây rất hữu ích. Tôi không thể thiết lập hệ thống theo chủ đề này. digitalocean.com/community/tutorials/ từ
Léo Léopold Hertz

Câu trả lời:


37

Tôi tìm thấy lỗi. Đó là bởi vì tôi đang sử dụng một tập lệnh để thiết lập các chứng chỉ và một trong những bước tôi đang thực hiện là apache2ctl configtest. Lỗi xuất phát từ lệnh này, và không phải do khởi động lại apache, đó là những gì đã gây hiểu lầm cho tôi. Vì tôi đang chạy lệnh apache2ctl như người dùng bình thường, nên nó không có quyền truy cập vào các keyfiles và do đó có thông báo lỗi.

Facit: đảm bảo tất cả các lệnh apache của bạn được chạy bằng sudo, ngay cả những lệnh chỉ dành cho xác minh cú pháp ( apache2ctl), vì chúng không cần truy cập vào các khóa.


8

Tôi cũng nhận được tin nhắn

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

trong khi /path/to/filetồn tại và có quyền, chỉ vì Selinux được bật và tệp này không thể truy cập được đối với người dùng apache.

Nó trông như thế này:

$ 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

Để khắc phục điều này, tôi chạy sudo restorecon -Rv /etc/pki/tls/certs/- nó sẽ sửa thuộc tính SELinux cho tệp vấn đề.


nó đã giúp tôi cho một certs không được tạo trên máy chủ đó nhưng được tải lên từ nguồn khác
tymik

2
sudo: restorecon: command not found
Francisco Corrales Morales

@FranciscoCorralesMorales restoreconlà một phần của policycoreutilsgói. Ngoài ra, bạn có thể không có Selinux nào cả?
AntonioK

6

Tôi đã làm điều này và nó đã giúp tôi trên CentOS 5.7

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

1

Tôi nhận được một tin nhắn tương tự:

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

Vấn đề của tôi là trình soạn thảo văn bản mà tôi đang sử dụng đã đặt "trích dẫn đúng" ascii 148 thay vì trích dẫn kép thông thường ascii 34; sử dụng trình soạn thảo kiểu unix (ví dụ TextWrangler) đặt đúng trích dẫn và khắc phục sự cố.


0

Quyền là sai, nhưng theo câu trả lời của bạn, đó không phải là nguyên nhân của vấn đề:

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

/ etc / ssl / private thường thuộc nhóm ssl-cert trên các hệ thống dựa trên debian.

Chỉ cần chú ý đến 0710 perms và tự hỏi nó có thể được sử dụng để làm gì.


Bạn có lẽ đúng, ít nhất là 0750. Tôi đã thử nhiều thứ khác nhau, và trạng thái tôi đã đăng có lẽ không phải là chính xác nhất. Chạy apache2ctl như root đã chắc chắn giải quyết vấn đề của tôi.
dangonfast

1
0710 là tốt, bạn cần biết tên tập tin để truy cập nó.
ypnos
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.