web-dev-qa-db-ja.com

複数の仮想ホスト(Windows、Apache 2.4.2、OpenSSL 1.0.2e)用の1つのIPアドレスとワイルドカード証明書

検索して検索しましたが、問題の解決策が見つかりません。おなじみのように聞こえたらお詫びしますが、途方に暮れています。

私が持っています:

  • Windows環境
  • Apache2.4.2。
  • OpenSSL 1.0.2e
  • 1つのIPアドレス(開発ボックス:127.0.0.1)
  • 複数の仮想ホスト(www.site.co.uk、sub.site.co.ukなど)
  • Comodoからの本物のドメイン検証済みワイルドカード証明書

すべての仮想ホストにワイルドカード証明書を使用する必要があります。

Opensslを使用してサイト/証明書をテストし、問題がないことを確認しました。

ポート80を介して標準のhttpを使用すると、すべてのサイトが正常に機能します。

Httpd-ssl.confを有効にすると、問題が発生し始めます。

Http-ssl.conf構成のいくつかの例を見て試しましたが、すべて断続的な接続障害が発生します。つまり、Firefox: "Secure Connection Failed"、IE11: "このページは表示できません "。 ただし、(各ブラウザで)ページを更新すると、ページが表示され、証明書が有効であることがわかります。

私が読んだところによると、http-ssl.confの設定が正しくないことを示していますが、Mozilla SSL Configuration Generatorを試しました( https://mozilla.github.io/server-side-tls/ssl-config-generator / )、多くのスタックオーバーフローの答えがありますが、それでも喜びはありません。

これは私の現在のhttpd-ssl.confファイルです:

Listen  443 https

SSLStrictSNIVHostCheck off

SSLPassPhraseDialog builtin
SSLSessionCache     "shmcb:C:/Apache2.4/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
SSLProtocol         All -SSLv2 -SSLv3 
SSLCipherSuite      ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS

<VirtualHost 127.0.0.1:443>
    ServerName  www.site.co.uk
    ServerAlias www.site.co.uk
    DocumentRoot    C:\WebServer\Apache2.4\htdocs\www.site.co.uk

    SSLEngine On
    SSLCertificateFile "C:\WebServer\Apache2.4\conf\extra\ssl\site_wildcard.crt"
    SSLCertificateKeyFile "C:\WebServer\Apache2.4\conf\extra\ssl\site_wildcard.key"
    SSLCertificateChainFile "C:\WebServer\Apache2.4\conf\extra\ssl\site_wildcard.ca-bundle"
    SSLCACertificateFile "C:\WebServer\Apache2.4\conf\extra\ssl\addtrustexternalcaroot.crt"
</VirtualHost>

<VirtualHost 127.0.0.1:443>
    ServerName  sub.site.co.uk
    ServerAlias sub.site.co.uk
    DocumentRoot    C:\WebServer\Apache2.4\htdocs\sub.site.co.uk
</VirtualHost>
2
JustBaron

多くのテストの後、私の元のコメントは問題を解決しませんでした。

証明書が正しく構成されました。

Ssllabs.comなどのWebサイトでテストを実行すると、構成の変更が行われていなくても、プロトコルとハンドシェイクの結果がランダムに異なります。

OpenSSLを使用したテスト/検証では、散発的に正しい結果が得られましたが、ほとんどの場合、次の結果になりました。

sslハンドシェイクに失敗しました

原因は、httpd.confファイルに次のようなものがあったことです。

AcceptFilter https none

コメントアウトした後、問題は解決しました。

#AcceptFilter https none
1
JustBaron

私が設定を正しく解釈するとき、あなたはあなたのV-Hostsをローカルインターフェースに設定します。ページを適切に提供したい場合は、ホストをアクセス可能なIPに設定する必要があります。

<VirtualHost 0.0.0.0:443>
ServerName  www.site.co.uk
ServerAlias www.site.co.uk
...
</VirtualHost>

またはサーバーのIP(つまり、192.168.23.4)

<VirtualHost 192.168.23.4:443>
ServerName  www.site.co.uk
ServerAlias www.site.co.uk
...
</VirtualHost>

多分これはあなたの問題を修正します。

更新:私の設定は次のようになります(Linuxシステム)

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin     [email protected]
        ServerName      www.foo.bar.com
        ServerAlias     foo.bar.com
        DocumentRoot    /var/www/foo
        SSLEngine on
        SSLProtocol TLSv1
        SSLHonorCipherOrder On
        SSLCipherSuite RC4-SHA:HIGH:!ADH

        SSLCertificateChainFile         /etc/Apache2/ssl/2015/intermediate.crt
        SSLCertificateFile              /etc/Apache2/ssl/2015/public.crt
        SSLCertificateKeyFile           /etc/Apache2/ssl/private.open.key
</VirtualHost>
<VirtualHost *:443>
        ServerAdmin [email protected]
        ServerName      www.bar.com
        ServerAlias     bar.com
        DocumentRoot /var/www/bar

        SSLEngine on
        SSLProtocol TLSv1
        SSLHonorCipherOrder On
        SSLCipherSuite RC4-SHA:HIGH:!ADH

        SSLCertificateChainFile         /etc/Apache2/ssl/2015/intermediate.crt
        SSLCertificateFile              /etc/Apache2/ssl/2015/public.crt
        SSLCertificateKeyFile           /etc/Apache2/ssl/private.open.key

...
</VirtualHost>
</IfModule>
0
antic-eye