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로의 리디렉션이 필요하지 않습니다. 아래는 내 아파치 구성입니다. 인증서의 유효성을 확인하지 않는 것으로 알고 있습니다. 지금은 자체 서명되어 있지만 앞으로는 바뀔 것입니다.

##################################################################
###                                                            ###
###   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 구성이 작동합니다.

답변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

관련 정보