ssl_moduleはどこにロードされ、ポート443にバインドできないのですか?

ssl_moduleはどこにロードされ、ポート443にバインドできないのですか?

httpdを起動しようとすると、次のエラーが発生します。

# service httpd start || journalctl -xn
..
[so:warn] [pid 425] AH01574: module ssl_module is already loaded, skipping
httpd[425]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:443
httpd[425]: no listening sockets available, shutting

構文は大丈夫です。

# httpd -t
[so:warn] [pid 917] AH01574: module ssl_module is already loaded, skipping
Syntax OK

わかりましたので、二度ロードssl_module.soされました。しかし、そうではありません:

# grep -ir ssl_module /etc/httpd/*
/etc/httpd/conf.d/ssl.conf:LoadModule ssl_module modules/mod_ssl.so

また、ポート 443 で何かがリッスンしているというメッセージも表示されます。しかし、そうではありません:

# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      336/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      336/sshd

私のhttpd設定は一度だけ受け取ります。

# grep -ir 443 /etc/httpd/*
/etc/httpd/conf.d/ssl.conf:Listen 443
/etc/httpd/conf.d/ssl.conf:<VirtualHost *:443>

Apacheはどのサービスも実行していません。

# top -u apache
..
(nothing)

ソケットがすでに使用中であることを示す警告とエラーがあるため、Apacheはssl_module.soをロードし、ポート443でリッスンする他のconfをロードするようです。

しかし、問題は..どこですか?

これはCentOS Linuxバージョン7.2.1511を実行するVPSの設定です。

答え1

問題は、最終的にhttpd.confに重複した行があったため、ssl.confが2回ロードされることでした。

次の行があります。

Include conf.d/*.conf

そしてもっと下へ:

IncludeOptional conf.d/*.conf

最初のエントリが削除され、問題が解決されました。

答え2

apache2 -Xデバッグする最も簡単な方法は、httpd -Xデバッグモードまたはビルドに従ってターミナルセッションでサーバーを実行することです。このフラグを使用して詳細レベルを上げることができます-e。コマンド-Sフラグは設定をダンプします。他のフラグはページに記載されていますman

この-Mフラグはロードされたモジュールをリストします。 SSLは通常モジュールとして提供され、HTTPSを有効にする前にロードする必要があります。

関連情報