質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Q&A

解決済

2回答

46203閲覧

サイトをSSL対応させようとしたらapacheが起動しなくなった

shutosg

総合スコア20

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

1グッド

3クリップ

投稿2017/01/27 20:26

編集2017/01/28 08:14

お世話になっております。
ウェブサイトをSSL対応させようとしたらapacheが起動しなくなってしまいました。

環境

CentOS Linux release 7.3.1611 (Core)
Server version: Apache/2.4.6 (CentOS)

経緯

既存の個人サイトをhttps対応にさせたくて、

などを参考に、Let's Encryptの証明書の発行を行ったのち、

  • /etc/httpd/conf/httpd.conf
  • /etc/httpd/conf.d/ssl.conf

に証明書ファイルの場所やバーチャルホストの設定を書き加えたのですが、いざapacheを sudo systemctl restart httpd としたところ、起動しなくなってしまいました。

$ sudo systemctl start httpd Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

設定ファイルのSyntax errorを疑って apachectl configtest としたところ、Syntnax errorで「証明書ファイルが見つからない」と言われたのですが、それは証明書ファイルのあるディレクトリパーミッションが適切ではないことが原因だったようで、それを直して Syntax OK となったのですが、まだ起動しません。

ファイアーウォールの設定も、httpsを許可しています。
ログなどを出してみたものの、ググっても解決せずでした。

ログなど

$ systemctl status httpd.service ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since 土 2017-01-28 03:54:17 JST; 16min ago Docs: man:httpd(8) man:apachectl(8) Process: 1275 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE) Process: 1167 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE) Main PID: 1167 (code=exited, status=1/FAILURE) 1月 28 03:54:17 150-95-128-75 kill[1275]: kill: cannot find process ""
$ jounralctl -xe

長いので こちら に貼りました。

apacheのログに関しては、最新のところが以下の様に出ております。

# httpd_error_log [Sat Jan 28 03:02:49.229090 2017] [ssl:emerg] [pid 23700] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/etc/httpd/conf/httpd.conf:419) [Sat Jan 28 03:03:21.043074 2017] [ssl:emerg] [pid 23755] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/etc/httpd/conf/httpd.conf:419) [Sat Jan 28 03:03:59.848238 2017] [ssl:emerg] [pid 1120] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/etc/httpd/conf/httpd.conf:419) [Sat Jan 28 03:04:34.333542 2017] [ssl:emerg] [pid 2719] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/etc/httpd/conf/httpd.conf:419) [Sat Jan 28 03:06:14.654515 2017] [ssl:emerg] [pid 2796] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/etc/httpd/conf/httpd.conf:419) [Sat Jan 28 03:07:55.335009 2017] [ssl:emerg] [pid 2865] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/etc/httpd/conf/httpd.conf:419) [Sat Jan 28 03:09:16.934538 2017] [ssl:emerg] [pid 2940] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/etc/httpd/conf/httpd.conf:419) [Sat Jan 28 03:11:41.539592 2017] [ssl:emerg] [pid 3020] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/etc/httpd/conf/httpd.conf:419) [Sat Jan 28 03:16:12.647846 2017] [ssl:emerg] [pid 3160] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/etc/httpd/conf/httpd.conf:419) [Sat Jan 28 03:26:53.674303 2017] [ssl:emerg] [pid 3417] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/etc/httpd/conf/httpd.conf:419) # ssl_error_log [Sat Jan 28 02:01:15.643699 2017] [ssl:warn] [pid 10363] AH01909: RSA certificate configured for ***:***:***:***:***:***:443 does NOT include an ID which matches the server name [Sat Jan 28 02:01:15.643699 2017] [ssl:warn] [pid 10363] AH01909: RSA certificate configured for ***:***:***:***:***:***:443 does NOT include an ID which matches the server name

エラーメッセージにでている /etc/httpd/conf/httpd.conf の419行目ですが、以下のようなディレクティブが続いています。

<VirtualHost *:443> SSLEngine on ServerName my_domain.net ServerAlias www.my_domain.net DocumentRoot /path/to/my/www/doc/ CustomLog logs/my_domain-access_log combined ErrorLog logs/my_domain-error_log (上述のhttpd_error_logのこと) </VirtualHost>

よろしくお願いします。

yodel👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2017/01/28 03:41 編集

/var/log/httpd/error_log, /var/log/httpd/ssl_error_log に何か起動失敗に関連するログは出ていないでしょうか?
shutosg

2017/01/28 06:13

追記いたしました。ご確認お願い致します。
TaichiYanagiya

2017/01/28 07:54

ログの情報、ありがとうございます。 /etc/httpd/conf/httpd.conf の 419行目に問題がありそうです。 /etc/httpd/conf/httpd.conf, /etc/httpd/conf.d/ssl.conf の内容を教えてくださいませんでしょうか。
guest

回答2

0

自己解決

バーチャルホストに関するssl用の設定を誤って /var/www/conf/httpd.conf に記述していた事が原因だったようです。
http://qiita.com/HitoshiHaga/items/67378de7f97fbaa6d356 を参考に、 /etc/httpd/conf.d/ssl.conf 内にssl対応させたいサイトの設定を記述したところ、(未だにhttpsでは繋がらないのですが、)apacheの起動に成功しました。
TaichiYanagiyaさんのヒントからたどり着きました。また、mit0223さんのおかげでopensslコマンドを利用した証明書に関する情報の確認方法も知れたので勉強になりました。
どうもありがとうございました!

投稿2017/01/28 08:38

shutosg

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

RSA certificate configured for ::::::443 does NOT include an ID which matches the server name

証明書とサーバ名が合っていないと言ってます。

Apache の httpd.conf か ssl.conf で ServerName ディレクティブでサーバ名を指定している場合、その名前と証明書の発行対象の名前が一致しているか確認してください。

ServerName ディレクティブでサーバ名を指定していない場合、 Apache は自分のIPアドレスから逆引きするので、一致させるのは面倒です。ServerName ディレクティブで証明書の発行対象の名前を指定してください。

投稿2017/01/28 07:42

mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2017/01/28 07:55

それはそのとおりなのですが、起動しない原因ではないと思います。
shutosg

2017/01/28 08:05

回答ありがとうございます。 一応ServerNameディレクトリには証明書の発行対象(だと思う)ドメイン名を入力しました。 Let's Encryptの実行ファイル./certbot-autoに対して ``` ./certbot-auto certonly --webroot \ -w /var/www/my_www_file -d my_domain.net \ -w /var/www/my_www_file2 -d hoge.my_domain.net \ -m my_mail_address@yahoo.co.jp ``` の様にコマンドを打ったので、メインで利用しているmy_domain.netを ServerName my_domain.net としています。
mit0223

2017/01/28 08:23 編集

なるほど、ということはサーバ証明書がうまくいってないのかもしれません。SSLCertificateFileディレクティブで指定したサーバ証明書のファイルに対して、以下のコマンドを実行し、 $ openssl x509 -in サーバ証明書のファイル -noout -subject 出てきた行の CN= の後ろがサーバ名と同じか確認してください。
shutosg

2017/01/28 08:26

ありがとうございます。CN=my_domain.netと表示されました。 これはServerNameディレクティブに記述しているものと同じです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問