web-dev-qa-db-ja.com

複数のポートの同じドメインで「https」を構成するにはどうすればよいですか?

私はウェブサイト(Apacheウェブサーバー、ubuntu 14.04)のセットアップ http://example.com を持ち、ポート1996と1980で構成されています。

これらのリンクはhttpで機能します

http://example.com/myproject
http://example.com:1996/
http://example.com:1980/

次に、SSL証明書をインストールし、httpsを使用するようにこのサーバーを構成しました。

しかし、これらのリンクは機能しません

https://example.com:1996 
https://example.com:1980

複数のポートの同じドメインでhttpsを構成するにはどうすればよいですか?

default.conf:

<VirtualHost *:80>
               ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${Apache_LOG_DIR}/error.log
        CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:443>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${Apache_LOG_DIR}/error.log
        CustomLog ${Apache_LOG_DIR}/access.log combined
        ServerName example.com
        SSLEngine on
        SSLCertificateFile /home/ubuntu/ssl_cert/signed_cert.crt
        SSLCertificateKeyFile /home/ubuntu/ssl_cert/server.key

</VirtualHost>

ports.conf:

Listen 80

<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>
3
Nani

編集:ユーザー設定のデバッグ、それはnetstatで見つかりました1996/TCPを使用するプロセスがすでにあります:

netstat -nlp | grep 1996
tcp 0 0 0.0.0.0:1996 0.0.0.0:* LISTEN 4729/python

そのため、構成例は1997/TCPに変更されました。


Apache/mod_sslは、1997/TCPおよび1980/TCPがHTTPSポートであることを通知する必要があります。デフォルトでは443/TCPはすでに認識されていますが、他のTLS対応TCPポートは構成に追加する必要があります。

そうでない場合、443/TCP以外のポートは、HTTP対応ポートとしてのみ処理されます。

たとえば、CentOSでは/etc/httpd/conf.d/ssl.confに、Debian/Ubuntuでは/etc/Apache2/ports.confに次の行を追加する必要があります。

Listen 1997 https
Listen 1980 https

また、対応する仮想ホストでポートを定義する必要があります。

<VirtualHost *:1997>
Servername example.com
....
</VirtualHost>

<VirtualHost *:1980>
Servername example.com
....
</VirtualHost>

それはあまり知られていません、次のようにすることができます(例としてのみ:: * 443を使用しているvhostがある場合は使用しないでください):

<VirtualHost *:443 *:1980>
Servername example.com
....
</VirtualHost>

設定ファイルを編集した後、Apacheを再起動する必要があります。 Debian/Ubuntuでは、次のように再起動されます。

Sudo service Apache2 restart

From Apache-アドレスとポートへのバインド

Listenでプロトコルを指定する

Listenのオプションの2番目のプロトコル引数は、ほとんどの構成では必要ありません。指定しない場合、httpsがポート443のデフォルトであり、httpが他のすべてのポートのデフォルトです。プロトコルは、どのモジュールが要求を処理するかを決定し、AcceptFilterディレクティブを使用してプロトコル固有の最適化を適用するために使用されます。

標準以外のポートで実行している場合にのみ、プロトコルを設定する必要があります。たとえば、ポート8443でhttpsサイトを実行します。

192.170.2.1:8443 httpsを聞く

重要な注意:ポートごとに1つのListen行/ディレクティブのみを構成する必要があります。これらのポートのListenディレクティブがすでにある場合は、コメントするか、その前にhttpsを追加します。そうしないと、Apacheの起動時に「アドレスはすでに使用中」になります。

前の段落のTLDR:おそらく、Apache2.confに少なくとも1996年のリッスンがすでに重複しています。それを削除してください。 (いいえ、それは別の実行中のサービスによって使用されています)

2番目の注意:他の実行中のサービスで構成した可能性のあるポートを使用しないでください。

3
Rui F Ribeiro