Apache 2.4ドキュメントを誤って理解しましたか?

Apache 2.4ドキュメントを誤って理解しましたか?

私のせいかドキュメントのせいかはわかりませんが、Apacheこれが出口を誤解する場合が多いと思います。

例:

http://httpd.apache.org/docs/2.4/ssl/ssl_howto.html

SSL構成には、少なくとも次のディレクティブを含める必要があります。

LoadModule ssl_module modules/mod_ssl.so

Listen 443
<VirtualHost *:443>
    ServerName www.example.com
    SSLEngine on
    SSLCertificateFile "/path/to/www.example.com.cert"
    SSLCertificateKeyFile "/path/to/www.example.com.key"
</VirtualHost>

SSLEngineしたがって、上記の内容に基づいて、ガイドラインは次のとおりです。〜しなければならない

https://httpd.apache.org/docs/2.4/mod/mod_ssl.html

SSLEngine Directive
Description:    SSL Engine Operation Switch
Syntax: SSLEngine on|off|optional
Default:    SSLEngine off
Context:    server config, virtual host
Status: Extension
Module: mod_ssl

This directive toggles the usage of the SSL/TLS Protocol Engine. This is should be used inside a <VirtualHost> section to enable SSL/TLS for a that virtual host. By default the SSL/TLS Protocol Engine is disabled for both the main server and all configured virtual hosts.
Example

<VirtualHost _default_:443>
SSLEngine on
#...
</VirtualHost>

In Apache 2.1 and later, SSLEngine can be set to optional. This enables support for RFC 2817, Upgrading to TLS Within HTTP/1.1. At this time no web browsers support RFC 2817.

特に次のような部分があります。デフォルトでは、マスターサーバーと構成されているすべての仮想ホストでSSL / TLSプロトコルエンジンが無効になっています。

まず、SSL / TLSプロトコルエンジンが実際に何を意味するのかわかりません。私が理解したように、SSL / TLSサポートを有効にするにはモジュールがデフォルトでインストールされていないため、インストールするmod_ssl必要があります。これは今話すエンジンですか?

第二に、一度インストールmod_sslすると、httpdリスニングを開始できるだけでなく、聞き80続ける443ことができます。

第三に、設定ファイルを見ると、ssl.conf次のような行がありますSSLEngine on。 Apacheのドキュメントによると、マスターサーバーの設定とそれ以前のもの(vhostディレクティブなど)はすべて1つに解析されます。しかし、なぜSSLEngineすべての仮想ホストでそのディレクティブを使用するのですか?

第四に、たとえば、2つの仮想ホストを作成し、ServerName各ホストがブラウザから送信された値に基づいて正しい証明書で応答するように、各ホストに対してSSLCertificateディレクティブとSSLCertificateディレクティブを定義しSNIます。いいえ両方の仮想ホストにSSLEngineディレクティブを含めると、WebコンテンツはhttpsApacheを介して正しいSSL証明書を返します。

文書には必須とされていますが、なぜなくても動作しますか?

あなたのコメントを楽しみにしています!

PS。私は人間だけであることを覚えておいてください。私は文書とコピーを読むのにかなりの時間を費やしました。何か逃したことがあればお詫び申し上げます。それは怠惰のためではなく、時にはすぐ​​前の簡単なアイデアを見落とすこともあります。

答え1

私は助けをしようとします:

1)SSLプロトコルエンジンは、SSLプロトコル(HTTPSとも呼ばれます)を駆動するエンジンです。このエンジンはmod_sslで提供されますが、追加のリソースを消費するため、デフォルトでは有効になりません。 HTTPプロトコルとは異なるため、一意の名前であるHTTPSが必要です。

2)ポート443が開き、SSLEngineが有効になっているのは、オペレーティングシステム管理者がこの設定をmod_sslパッケージにパッケージ化したためです。ソースから直接Apacheをビルドしてインストールすると、デフォルトの動作はドキュメントに記載されているのと同じです。

3)ssl.confファイルはDeployment Managerによって提供され、ApacheとApacheのドキュメントはこれについて何も知らないため、デフォルト値のみを文書化します。これがあなたのシステムにどのようなものかはわかりませんが、Apacheのドキュメントでは、SSLEngineが仮想ホストの構成に使用されるべきであることが示されているため、各仮想ホストに含める可能性が高くなります。不要なリソースを消費したくない場合は、各仮想ホストで有効にする必要があります。

4)これがあなたに見えるならば、おそらくこれはオペレーティングシステムによって提供されるもう一つの利便性によるものです。 Apacheは、各オペレーティングシステムがパッケージ内でApacheを設定する方法を知らないため、最も基本的なデフォルト動作のみを説明します。ディストリビューションに付属するすべてのApache設定ファイルを参照し、そのファイルがApacheの動作にどのような影響を与えるかを確認することで、多くのことを学ぶことができます。

関連情報