web-dev-qa-db-ja.com

Glassfishの前のApache:https(443)のmod_jk

Glassfishの前で Apache http server を使用することを推奨した後(チェック 質問 )、次の チュートリアル を使用しました。 それを動作させましたが、ポート80でのみ。
つまり、次のように入力できるようになりました。

www.mydomain.com

そしてそれは実行されます。ただし、httpsを必要とするアプリケーションを実行する場合、つまりweb.xml(J2EEアプリケーション)にある場合

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

私がタイプするとき:

www.mydomain.com

自動的にロードされます:

https://www.mydomain.com:8181

ポート8181を表示したくない、ただ:https://www.mydomain.com

PS:コンテキスト「/」で実行されるアプリケーションを1つだけ使用します

以下は私の構成です:

*worker.properties ファイル:

worker.list=ajp13unsecure, ajp13secure

worker.ajp13unsecure.type=ajp13
worker.ajp13unsecure.Host=localhost
worker.ajp13unsecure.port=8009

worker.ajp13secure.type=ajp13
worker.ajp13secure.Host=localhost
worker.ajp13secure.port=8009

*httpd.conf 私が追加したファイル:

Listen 443

# Load mod_jk module
# Update this path to match your modules location
LoadModule    jk_module  modules/mod_jk.so

# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile conf/workers.properties

# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to  access_log)
# This can be commented out, to disable logging
JkLogFile     logs/mod_jk.log

# Set the jk log level [debug/error/info]
# Only matters if JkLogFile is being used.
JkLogLevel    debug

# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"

# Send everything for context /examples to worker named worker1 (ajp13)
# /examples would most likely be the name of your WebApp (c:/Tomcat/webapps/example)
JkMount  /* ajp13secure

# Should mod_jk send SSL information (default is On)
JkExtractSSL On
# What is the indicator for SSL (default is HTTPS)
JkHTTPSIndicator HTTPS
# What is the indicator for SSL session (default is SSL_SESSION_ID)
JkSESSIONIndicator SSL_SESSION_ID
# What is the indicator for client SSL cipher suit (default is SSL_CIPHER)
JkCIPHERIndicator SSL_CIPHER
# What is the indicator for the client SSL certificated? (default is SSL_CLIENT_CERT)
JkCERTSIndicator SSL_CLIENT_CERT

質問:
ポート8181がURLに表示されなくなるように、何が欠けていますか?

また、SSL証明書はすでにGlassfishにインストールされていると言いましたが、Apacheにインストールする必要がありますか、それともそのように問題ありませんか?

PS:私は使用しています

  • glassfish v3.0.1
  • windows Server 2008 R2
  • Apache v2.2
  • 私 既に godaddySSL証明書をインストールしました Glassfishキーストアで。それは動作し、うまく動作しています。
3
shadesco

これは、SSLを介して接続するように強制するためにアプリケーションによって発行されたリダイレクトの結果です。問題は、glassfishがプロキシの背後にあるため、アプリは、実行しているポートがユーザーが使用するはずのポートではないことを認識しないことです。どこかで、使用するポートをオーバーライドする構成が必要です。

この特定の問題の簡単な解決策は、Java)の代わりにApacheを使用して、SSLの使用を強制することです。 mod_rewrite で行うことができます:

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

とは言うものの、本当の解決策は、そのURLリダイレクトがどこから来ているのか、そしてそれを再構成するために何ができるのかを理解することです。この問題は、ユーザー登録メールなど、アプリがURLを作成する他の場所で発生する可能性があります。

(免責事項:Glassfish/J2EE /これらすべての厄介な小さなJavaビットがどのように組み合わされるかについては何も知らないので、whereまさにそのスタックで、このURLが構築されているか、それを修正するために何を変更する必要があるか)

1
DerfK