2017-09-09 12 views
0

example1.comとexample2.comという2つのドメインが同じIP上で動作しています(12.345.678.90)。デフォルトの443仮想ホスト用のApache SSLエンジンを無効にする

今、私は12.345.678.90経由でhttpsのアクセスを完全に無視したいと思います。

私はすべてのデフォルト、2例のサイトの仕事でキャッチ最初のブロックをdissableとき、私は今

<VirtualHost *:443> 
    SSLEngine off 
</VirtualHost> 

<VirtualHost *:443> 
    SSLEngine on 
    ServerName example1.com 
    DocumentRoot /var/www/html/example1 
    SSLCertificateFile /etc/.../fullchain.pem 
    SSLCertificateKeyFile /etc/.../privkey.pem 
</VirtualHost> 

<VirtualHost *:443> 
    SSLEngine on 
    ServerName example2.com 
    DocumentRoot /var/www/html/example2 
    SSLCertificateFile /etc/.../fullchain.pem 
    SSLCertificateKeyFile /etc/.../privkey.pem 
</VirtualHost> 

(凝っずにコンパクトなコード)これを実行しようとしました。しかし、私がそれを有効にすると、何ももう機能しません。実際には、これは443のためにコピーされたポート80のソリューションに過ぎません。SSL固有の問題(エンコードされた要求データ)のようです。

httpsで「IPアクセス」をブロックするにはどうすればよいですか?または、設定を構成するためによく使用される方法は何ですか?

背景:IPベースのSSL証明書を作成することは標準化されていないため、このような要求を許可することは意味がありません。それも、IPベースのSSL-証明書を作成するために、標準化されていない

答えて

2

は、

これは本当に真実ではありません。標準では、特定のIPアドレスの証明書がサブジェクト別名セクションのiPAddressタイプを使用する必要があることを明示的に定義しています。しかしパブリックCAはIPアドレスの証明書を発行するのではなく、ホスト名のみを発行します。

あなたのサーバーは、特定のIPアドレスでSSLポート上の接続を受け入れるか、受け付けません。これは、TCPレベルではIPアドレスだけが表示され、ホスト名についての知識がないためです。最新のすべてのブラウザが行うSNI TLS拡張をクライアントが使用する場合、ホスト名はTLSハンドシェイク内でのみ認識されます。

したがって、クライアントがSNI拡張で未知のホスト名を使用しているか、SNI拡張をまったく使用していない、つまりhttps://ip-address/を使用している場合、TLSハンドシェイクを失敗させることが最も効果的です。設定は、上のデフォルトの名前ベースのバーチャルホストでは、気づかないSNIているクライアントは、この特定のIPに属する、任意の仮想ホストにアクセスすることはできませんする場合

:これはSSLStrictSNIVHostCheckディレクティブas documentedを使用して行うことができます/ポートの組み合わせ。このオプションで

http://ip-address/へのアクセスがクライアントにTLSの警告になりますし、TLSハンドシェイクが失敗します設定します。

関連する問題