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


33

のSSLを設定していますApache 2。私のシステムは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によって開始されますが、ポイント、および証明書がいつ読まれるかわかりません。

とにかく、グループの所有者を変更しても状況は改善されません。私の質問は:

  1. これを機能させるために他に何ができますか?
  2. キーファイルが有効なキーファイルであることを確認するにはどうすればよいですか?
  3. キーファイルと証明書(/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/...
レオ・レオポルド・ヘルツ준 영

回答:


37

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

注意:構文検証(apache2ctl)のみを対象とするものも含め、すべてのapacheコマンドは必ずキーにアクセスする必要があるため、sudoで実行してください。


8

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

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

ながら/path/to/file存在し、必要な権限を持っている、という理由だけでのSELinuxのがオンになり、このファイルは、Apacheのユーザーのためにunaccessableました。

次のようになります。

$ 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プロパティを修復します。


そのサーバーで生成された
証明書では

2
sudo: restorecon: command not found
フランシスココラレスモラレス

@FranciscoCorralesMorales restoreconpolicycoreutilsパッケージの一部です。また、SELinuxがまったくないかもしれません。
AntonioK 16

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の代わりに「正しい引用符」ASCII 148が配置されていました。UNIXタイプのエディター(TextWranglerなど)を使用して正しい引用符を付け、問題を修正しました。


0

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

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

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

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


あなたはおそらく正しいです、少なくとも0750であるべきです。私はさまざまなことを試してきましたが、投稿したステータスはおそらく最も正しいものではありません。rootとしてapache2ctlを実行すると、確実に問題が解決しました。
ダンゴンファスト

1
0710は問題ありません。アクセスするにはファイル名を知る必要があります。
ypnos
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.