同じドメインの複数のポートに対して「https」を設定するには?

同じドメインの複数のポートに対して「https」を設定するには?

Webサイト(Apache Webサーバー、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>

ポート.conf:

Listen 80

<IfModule ssl_module>
    Listen 443
</IfModule>

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

答え1

編集:ユーザー設定をデバッグしながら、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_ssl1997 / TCPと1980 / TCPがHTTPSポートであることを知らせる必要があります。デフォルトでは443 / TCPが知られていますが、他のTLS対応TCPポートを構成に追加する必要があります。

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

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

Listen 1997 https
Listen 1980 https

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

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

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

これもよく知られていません。次のことができます(例えば:* 443を使用している仮想ホストがまだ存在している場合は使用しないでください)。

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

設定ファイルを編集したら、Apacheを再起動する必要があります。 Debian/Ubuntu で再起動します。

sudo service apache2 restart

~からApache - アドレスとポートにバインド

Listenを使用したプロトコルの指定

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

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

192.170.2.1:8443 httpsを聞く

重要なヒント: ポートごとに1つの受信ライン/コマンドのみを設定できます。これらのポートの Listen ディレクティブが既にある場合は、そのポートにコメントを付けるか、ポートの前に https を追加できます。それ以外の場合、Apacheを起動すると「アドレスがすでに使用中です」というメッセージが表示されます。

最後の段落のTLDR:おそらく、apache2.confに少なくとも1996年の冗長なListenがすでにあるでしょう。削除してください。 (いいえ、実行中の他のサービスで使用されています。)

2番目のメモ:実行中の他のサービスに設定した可能性のあるポートを使用しないでください。

関連情報