Apache 2.4 SSLの設定 - サーバーはHTTP 400要求を拒否します。

Apache 2.4 SSLの設定 - サーバーはHTTP 400要求を拒否します。

Apache 2.4の設定に問題があります。入場https://subdomain.my-domain.comこのhttp 400は常に返されます。

間違った要求あなたのブラウザはこのサーバーが理解できない要求を送信しました。原因:SSL対応サーバーポートに通常のHTTPを送信しています。代わりにこのURLにアクセスするには、HTTPSスキームを使用してください。

私のサイトはhttpsを介して直接アクセスするため、httpからhttpsへのリダイレクトは必要ありません。以下は私のApacheの設定です。証明書の妥当性を確認しないことがわかります。今は自己署名されていますが、今後は変わります。

##################################################################
###                                                            ###
###   Global Settings                                          ###
###                                                            ###
##################################################################

    DocumentRoot /var/ebc/apache2/www/htdocs
    <Location /fwcheck.html>
        <RequireAll>
            Require all granted
        </RequireAll>
    </Location>

##################################################################
###                                                            ###
###   Global SSL Settings                                      ###
###                                                            ###
##################################################################

    SSLProtocol             ALL -SSLv2 -SSLv3
    SSLProxyProtocol        ALL -SSLv2 -SSLv3
    SSLHonorCipherOrder     on
    SSLCipherSuite          ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:HIGH:!MD5:!aNULL:!EDH
    SSLCompression          off
    SSLSessionTickets       off

    # OCSP Stapling, only in httpd 2.3.3 and later
    SSLUseStapling                      on
    SSLStaplingResponderTimeout         5
    SSLStaplingReturnResponderErrors    off
    SSLStaplingCache                    shmcb:/var/ebc/apache2/sslstaplingcache(128000)

##################################################################
###                                                            ###
###   Virtual Hosts                                            ###
###                                                            ###
##################################################################

<VirtualHost 10.173.144.43:80>
    ErrorLog /var/ebc/apache2/log/error.log
    CustomLog /var/ebc/apache2/log/access.log vhost_combined

    ##################################################################
    ###                                                            ###
    ###   Send everything to https except firewall check           ###
    ###   vhost config only for port 443 necessary.                ###
    ###   No further config for port 80.                           ###
    ###                                                            ###
    ##################################################################

        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !fwcheck.html
        RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

    ##################################################################
</VirtualHost>

<VirtualHost 10.173.144.43:443>
    ServerName subdomain.my-domain.com
    ErrorLog /var/ebc/apache2/log/error.log
    CustomLog /var/ebc/apache2/log/access.log vhost_combined

    ##################################################################
    ###                                                            ###
    ###   SSL Settings                                             ###
    ###                                                            ###
    ##################################################################

        RequestHeader set ClientProtocol HTTPS
        SSLEngine       On
        SSLProxyEngine  On

        SSLCertificateFile      /var/ebc/apache2/ssl/subdomain.my-domain.com.crt
        SSLCertificateKeyFile   /var/ebc/apache2/ssl/subdomain.my-domain.com.key
        SSLCACertificateFile    /var/ebc/apache2/ssl/subdomain.my-domain.com.crt

        ProxyRequests       off
        ProxyPreserveHost   on

        # Disable certificate checks
        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerName off

        # HSTS (15768000 seconds = 6 months)
        Header always set Strict-Transport-Security "max-age=15768000"

    ##################################################################
    ###                                                            ###
    ###   Locations                                                ###
    ###                                                            ###
    ##################################################################

        DocumentRoot /var/ebc/apache2/www/htdocs/prod

        <Location />
            Options None
            <RequireAll>
                Require all granted
            </RequireAll>
        </Location>

        <Location /web-status>
            <RequireAll>
                Require all denied
            </RequireAll>
        </Location>

        <Location /balancer-manager>
            <RequireAll>
                Require all denied
            </RequireAll>
        </Location>

    ##################################################################
</VirtualHost>

なぜこれがうまくいかないのかわかりません。誰でも私にヒントを与えることができますか?

答え1

問題が解決しました。上記の私のApacheの設定は正しいです。問題は誤って設定されたファイアウォールです。ファイアウォール設定を直接変更していないため、実際のソリューションを公開することはできませんが、上記のように上記のApache設定は機能します。

答え2

接続がインターフェイス 10.173.144.43:443 に到達しないため、VirtualHost では処理されません。これは、SSLが有効になっていないマスターサーバーの構成に影響します。

どのローカルインターフェイスが使用されているか気にしない場合は、VirtualHostで*を使用してください。

これで、一部のインバウンド要求が指定されたインターフェイス/ IPを使用するようにファイアウォールを変更しましたが、localhostを使用してコマンドラインでテストするとすぐに動作が停止することがあります。

答え3

を介してサーバーにアクセスしてみましたかtelnet?その場合、セキュリティページ(httpsなど)では正しく機能しません。

OpenSSLツールバーなど、この目的のために特別に設計されたツールを使用する必要があります。

次のコマンドセットを試してください。

  1. openssl s_client -connect <server>:<port>
  2. GET / HTTP/1.1

関連情報