web-dev-qa-db-ja.com

Apache:SSLCertificateKeyFile:ファイルが存在しないか空です

Apache 2のSSLを構成しています。私のシステムはUbuntu Server 10.04 LTSです。仮想ホスト構成にSSLに関連する次の設定があります。

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の2つのグループを使用して、所有権を変更してみました。 Ubuntuでどちらが正しいのかわかりません:デフォルトではUbuntuはssl-certを使用しますが、一方でApacheプロセスはユーザーwww-dataで実行されます:ユーザーrootによって開始されますが、一部ではwww-dataに変更ポイント、そして私は証明書がいつ読み込まれるかわかりません。

しかし、いずれにしても、グループオーナーを変更しても状況は改善されません。私の質問は:

  1. これを機能させるために他に何ができるでしょうか?
  2. キーファイルが有効なキーファイルであることをどのように確認できますか?
  3. キーファイルと証明書(/etc/ssl/certs/portal.selfsigned.crt)が連動していることを確認するにはどうすればよいですか?

Apacheが誤解を招くエラーメッセージを表示していると思います。エラーを特定します。

36
dangonfast

エラーが見つかりました。スクリプトを使用して証明書をセットアップしていて、実行している手順の1つがApache2ctl configtest。エラーはこのコマンドから発生したものであり、Apacheの再起動からではありませんでした。 Apache2ctlコマンドを通常のユーザーとして実行していたため、キーファイルにアクセスできなかったため、エラーメッセージが表示されました。

Facit:すべてのApacheコマンドがSudoで実行されていることを確認してください。構文検証のみを目的としたもの(Apache2ctl)、キーへのアクセスが必要な場合もあります。

42
dangonfast

私もメッセージを受け取ります

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プロパティが修復されます。

8
AntonioK

私はこれを実行しました、そしてそれはCentOS 5.7で私を助けました

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

私は同様のメッセージを受け取りました:

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

私の問題は、私が使用していたテキストエディターが、通常の二重引用符のascii 34の代わりに「右引用符」のascii 148を配置することでした。 UNIXタイプのエディター(例:TextWrangler)を使用して、正しい引用符を付け、問題を修正しました。

1
dkpruett

権限は間違っていますが、あなたの答えによると、それは問題の原因ではありませんでした:

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

/ etc/ssl/privateは通常、debianベースのシステムのグループssl-certに属しています。

0710パーマに気づき、何に使用できるのか疑問に思いました。

0
user130370