Let's Encrypt からSSL証明書を実行しています。 Apacheを実行しているUbuntuマシンにインストールしました。設定は問題なく機能し、ウェブサイトを起動して、緑色の南京錠を確認し、SSL LabsでA +を入手することもできます。
問題は、私がapachectl configtestを実行すると、ファイルが見つからないというエラーが返されることです。
SSLCertificateFile: file '/etc/letsencrypt/live/www.example.com/fullchain.pem' not exist or is empty.
だが Sudo service Apache2 restart
は問題なく動作します。
Let's Encrypt Community でこの質問を実行していますが、問題はまだ解決されていません。
Sudo cat /etc/letsencrypt/live/www.example.com/fullchain.pem
機能し、有効な証明書の詳細を返します。
Sudo x509 -text -noout -in /etc/letsencrypt/live/www.example.com/fullchain.pem
動作せず、以下のエラーが返されます。
Error opening Certificate /etc/letsencrypt/live/www.example.com/fullchain.pem
139774254929568:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/letsencrypt/live/www.example.com/fullchain.pem.','r')
139774254929568:error:2007402:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
ubable to load certificate
apachectl configtestおよびopensslでエラーが発生する理由に関するアイデア?
みんなありがとう!
眠れぬ夜を数回過ごした後、ようやくそれを働かせました。 (overkillステートメント)権限であることは誰もが知っていますが、正確にどこを確認する必要があるかはわかります。
/ ect/letsencrypt/liveとその下のディレクトリとファイルを使用して作業を続けました。元の許可を0755と0777に変更し続けました。すぐにわかりませんでした/ etc/letsencrypt/liveは/ etc/letsencrypt/archiveから作成されたリンクであり、0700権限がありました。そのため、ファイルを読み取ることができませんでした。 / etc/letsencrypt/archiveの権限を0755に変更した後、 apachectl configtest
はすでにSyntax OK
で応答しています。
元の問題は解決されましたが、これを Let's Encrypt に戻します。これはすべて証明書の自動インストールでした。このようなことは「自動」では起こらないはずです。しかし、root以外のユーザーを使用してインストールしたため(ただし、私はSudoを使用したため)、私のセットアップは権限の問題に関係している可能性があります。
これが誰かを助けることを願っています。
私の場合、ファイルと権限は問題ではありません。 apachectl restart
を使用してサーバーを再起動するか、構成(apachectl -t
またはapachectl configtest
)をテストしようとしました。コマンド(me)を実行しているユーザーには、証明書にアクセスするための適切な権限がありませんでした。 rootとして実行するには、コマンドの前にSudo
を付ける必要がありました。これ以上のエラーはありません。構成テストは「Syntax OK」を返し、サーバーを再起動できます。 (OK私は少し恥ずかしいですが、それを理解するのにとても時間がかかりました...)
Ian Terle によって最初にコメントされたように、「ライブ」ディレクトリの権限を変更すると、問題が修正されます。
Sudo chmod -R 0755 /etc/letsencrypt/live
注:OPと同じエラーが発生していました。
これは以下で確認されました:
Ubuntu 16.04.2 LTS
Apache/2.4.18(Ubuntu)
証明書ファイルへのアクセス許可は非常に厳格に残しておくのが最善です。適切なプロセスが証明書ファイルにアクセスできるようにするには、次のコマンドを使用してApacheを起動します。
Sudo service httpd start
または、次のコマンドを使用して正常に再起動します。
Sudo service httpd graceful