今日、Java EE プロジェクトで SSL の実装を開始しました。ログアウトした顧客で保護領域に直接アクセスしようとするまで、すべてが正常に機能していました。ログイン ページにリダイレクトされる代わりに、単一の疑問符が表示されました。
- この動作は FireFox のみを生成し、IE は正常に動作します
- SSL がなければ、FireFox も問題なく動作します。
Tomcat 7.0 と JSF 2.1 を使用しています。保護されているページは次のとおりです。
- SubDir /admin 内のすべてにアクセスするにはロール ADMIN が必要です
- 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&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 "%r" %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>