
古い OpenSuse サーバーで SSL を設定しようとしています:
openSUSE 11.4 (x86_64)
VERSION = 11.4
CODENAME = Celadon
Apache SSL モジュールを有効にしました:
apache2ctl -M
Loaded Modules:
core_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
actions_module (shared)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_host_module (shared)
authz_groupfile_module (shared)
authz_default_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgi_module (shared)
dir_module (shared)
env_module (shared)
expires_module (shared)
include_module (shared)
log_config_module (shared)
mime_module (shared)
negotiation_module (shared)
setenvif_module (shared)
ssl_module (shared)
userdir_module (shared)
php5_module (shared)
reqtimeout_module (shared)
deflate_module (shared)
headers_module (shared)
rewrite_module (shared)
Syntax OK
そして、SSL 証明書を提供する仮想ホストを構成し (vhost-ssl.template をコピーして編集し、名前を https.xxxxxxxx.conf に変更)、Apache を再起動しました。
接続しようとすると、次のエラーが発生します:
openssl s_client -connect localhost:443
connect: Connection refused
connect:errno=111
インストールされている openssl のバージョンは次のとおりです。
OpenSSL 1.0.1p 9 Jul 2015 (Library: OpenSSL 1.0.0c 2 Dec 2010)
役に立つなら、これが私の iptables 設定です:
iptables -L -vn
Chain INPUT (policy ACCEPT 4641 packets, 815K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1691 packets, 4745K bytes)
pkts bytes target prot opt in out source destination
ローカルホストで 443 ポートに接続できない理由を教えてください。
編集:
これは Apache と追加の https.xxxxxxx.conf ファイルの問題であると思われます:
httpd2 -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server xxxxxxxx.it (/etc/apache2/vhosts.d/xxxxxxxx.conf:3)
port 80 namevhost xxxxxxxx.it (/etc/apache2/vhosts.d/xxxxxxxx.it.conf:3)
port 80 namevhost XXX.XXX.XXX.XXX (/etc/apache2/vhosts.d/xxxxxxxx.it.conf:9)
私の listen.conf では、SSL モジュールが有効になっている場合は 443 を listen する必要があるようです。
Listen 80
<IfDefine SSL>
<IfDefine !NOSSL>
<IfModule mod_ssl.c>
Listen 443
</IfModule>
</IfDefine>
</IfDefine>
これは netstat の出力です:
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:3306 0.0.0.0:* LISTEN 8105/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1847/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2179/master
tcp 0 0 :::80 :::* LISTEN 13330/httpd2-prefor
tcp 0 0 :::21 :::* LISTEN 1930/vsftpd
tcp 0 0 :::22 :::* LISTEN 1847/sshd
tcp 0 0 ::1:25 :::* LISTEN 2179/master
SSLモジュールを有効にするために/etc/sysconfig/apache2ファイルを変更しました
APACHE_SERVER_FLAGS="SSL"
今では、ローカルでもリモートでもボットが正しく応答するようです:
openssl s_client -connect localhost:443
CONNECTED(00000003)
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
ブラウザから取得してからまだ問題があります:
This site can’t be reached
xxxxxxxx.it unexpectedly closed the connection.
Try:
Checking the connection
Checking the proxy and the firewall
Running Network Diagnostics
ERR_CONNECTION_CLOSED
しかし、私はこの問題は関連していないと考えています
答え1
ついに解決しました! デフォルトの Apache listen.conf には、マシンに割り当てられた IP アドレスのエントリがありませんでした。 なるほど。 「listen 80」でマシンのすべての IP アドレスがカバーされると思っていました。