1

今日、Java EE プロジェクトで SSL の実装を開始しました。ログアウトした顧客で保護領域に直接アクセスしようとするまで、すべてが正常に機能していました。ログイン ページにリダイレクトされる代わりに、単一の疑問符が表示されました。

保護されたページを要求すると、ログイン ページの代わりに疑問符だけが表示されます

  1. この動作は FireFox のみを生成し、IE は正常に動作します
  2. SSL がなければ、FireFox も問題なく動作します。

Tomcat 7.0 と JSF 2.1 を使用しています。保護されているページは次のとおりです。

  1. SubDir /admin 内のすべてにアクセスするにはロール ADMIN が必要です
  2. SubDir /customer 内のすべてにアクセスできるようにロール CUST が必要です

奇妙なことに、このクエスチョン マークは SubDir /customer 内の一部のページにアクセスした場合にのみ表示されます。他のすべて (/admin 内のものを含む) にアクセスしようとすると、ログイン ページが正しく表示されます (すべてのページは同じように構成されています)。

最後に、TCP ポート 8443 の代わりに 443 を使用して、Web サイトを正常に稼働させました。保護されたページに誰かがアクセスする前に、両方のブラウザでログイン ページが正しく表示されるようになりました。

だから私の質問。ポート 8443 が使用されている場合にこの動作が発生する理由を知っている人はいますか? また、ポート 8443 を引き続き使用する方法はありますか?

以下に、tomcats server.xml ファイルがあります。前もって感謝します!

    <?xml version="1.0" encoding="UTF-8"?>
<Server
    port="8005"
    shutdown="SHUTDOWN" >

    <Listener
        SSLEngine="on"
        className="org.apache.catalina.core.AprLifecycleListener" />

    <Listener className="org.apache.catalina.core.JasperListener" />

    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

    <GlobalNamingResources>

        <Resource
            name="UserDatabase"
            auth="Container"
            description="User database that can be updated and saved"
            factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
            pathname="conf/tomcat-users.xml"
            type="org.apache.catalina.UserDatabase" />
    </GlobalNamingResources>

    <Service name="Catalina" >

        <Connector
            connectionTimeout="20000"
            port="8080"
            protocol="HTTP/1.1"
            redirectPort="443" />

        <Connector
            SSLEnabled="true"
            clientAuth="false"
            keystoreFile="C:\Program Files (x86)\apache-tomcat-7.0.30\conf\BookStore.keystore"
            keystorePass="myPwd"
            maxThreads="200"
            port="443"
            protocol="HTTP/1.1"
            scheme="https"
            secure="true"
            sslProtocol="TLS" />

        <Connector
            port="8009"
            protocol="AJP/1.3"
            redirectPort="443" />

        <Engine
            name="Catalina"
            defaultHost="localhost" >

            <Realm className="org.apache.catalina.realm.LockOutRealm" >

                <Realm
                    className="org.apache.catalina.realm.UserDatabaseRealm"
                    resourceName="UserDatabase" />
            </Realm>

            <Realm
                className="org.apache.catalina.realm.JDBCRealm"
                connectionURL="jdbc:mysql://localhost/bookstore?user=bookstore&amp;password=book$tore"
                driverName="org.gjt.mm.mysql.Driver"
                roleNameCol="role"
                userCredCol="pwd"
                userNameCol="eMail"
                userRoleTable="roles"
                userTable="customer" />

            <Host
                name="localhost"
                appBase="webapps"
                autoDeploy="true"
                unpackWARs="true" >

                <Valve
                    className="org.apache.catalina.valves.AccessLogValve"
                    directory="logs"
                    pattern="%h %l %u %t &quot;%r&quot; %s %b"
                    prefix="localhost_access_log."
                    suffix=".txt" />

                <Context
                    docBase="BookStore"
                    path="/BookStore"
                    reloadable="true"
                    source="org.eclipse.jst.jee.server:BookStore" />
            </Host>
        </Engine>
    </Service>

</Server>
4

1 に答える 1

1

https 接続で http を使用しようとすると、疑問符が表示されます。FF 内のデフォルト設定ではプロトコルが非表示になっているため、使用しているプロトコルを確認することはできません。

ブラウザーの URL 内にabout:configと入力し、 browser.urlbar.trimURLsを探して、 falseに設定します。これで、ブラウザの URL の前にhttp://が表示されます。httpsSに切り替えるとクエスチョンマークが消えます。

編集: アクセスしようとしている URL がタブに表示されます。これはhttpsではなくhttpです。

于 2012-12-02T19:52:10.470 に答える