web-dev-qa-db-ja.com

ApacheにAJPと組み合わせてHTTPSを使用させるにはどうすればよいですか?

Apache Webサイトがあり、JBossを利用した特定の部分があります。問題は、ApacheにすべてのHTTPリクエストを強制的にHTTPSにリダイレクトさせるにはどうすればよいですか?

私たちの古いサーバー(CentOS 4、Apache 2.0、mod_jk)には、次の構成があります。

<VirtualHost 1.2.3.4:80>
Redirect / https://www.foo.com/
</VirtualHost>

これはうまく機能します-PHP、Vanilla HTML、またはJBossを利用したWebページへのリクエストはすべてリダイレクトされます。ただし、新しいサーバー(CentOS 5、Apache 2.2、mod_proxy_ajp)では、同じ構成onlyがVanillaページで機能しますが、送信されるものでは機能しませんAJPを使用するJBoss。

http://www.webmasterworld.com/Apache/3050511.htm にある次のことも試しました。

<Proxy *>
    RewriteEngine on
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</Proxy>

しかし、それでも運はありません。私は明らかな何かを見逃しているように感じます。何か助けは?

追伸私は決してApacheのエキスパートではありません。これが初心者の質問であることが判明した場合は、謝罪します:-P。

5
Matt Solnit

私があなたを正しく理解している場合、すべてのhttpリクエストをhttpsにアップグレードする必要があります。これが正しければ、これを試してください

<VirtualHost ip:80>
   ServerName www.company.com

   RedirectMatch permanent ^(.*)$ https://www.company.com$1
</VirtualHost>

<VirtualHost ip:443>
   ServerName www.company.com

   Include vhosts.d/includes/ssl.conf

   # assumes you want to proxy everything on this vhost to jboss:8009
   <Location / >
       ProxyPass ajp://jboss:8009/
   </Location>
</VirtualHost>
9
Dave Cheney

この構文は、ホストとURLを同じに保ちながらHTTPSにリダイレクトします。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

ディレクトリ、つまり管理領域のみをリダイレクトしたい場合があります。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/admin(|/.*)$ https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
5

どのように解決しても、SSLのみにしたい場所にディレクティブ SSLRequireSSL を置くことをお勧めします。そうすることで、プロセスの後半で構成エラーが発生した場合でも、非SSL接続を介して何も公開されません。

2
CK.

Sslリダイレクトのより効率的な構文は、Apache env var HTTPSを使用することです

あなたはこれが好きです:

ホスト書き換え

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://yourhost.com%{REQUEST_URI} [R,L]

ホスト書き換えなし

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R,L]

Mod_jkとApache2.2 ajpプロキシに関しては、静的コンテンツと動的コンテンツを分離する必要があるときにJkMountとJkUnMountが役立つことがわかったからといって、mod_jkを使用します。構成を構造化する方法は、sslを含む条件付きです。したがって、各ホストに1つのhttpd.confがあり、各confに次の方法でディレクトリが含まれています。

/etc/httpd/test_conf.httdp.conf:

SeverName test.com
ServerRoot /etc/httpd
LoadModule jk_module modules/mod_jk.so
LoadModule ssl_module/mod_ssl.so
(snip)
Include conf/test_com/*.conf

/etc/httpd/test_conf/mod_jk.conf

<IfModule jk_module>
JkWorkersFile conf/test_conf/workers.properties

JkLogFile logs/test_conf/mod_jk.log 

JkLogLevel error

JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

JkRequestLogFormat "%w %V %T"

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(PUT|DELETE|TRACK|OPTIONS|TRACE)
RewriteRule .* - [F] 

JkMount /* loadbalancer
JkUnMount /error* loadbalancer

JkShmFile run/jk.shm

<Location /jkstatus/>
JkMount status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>

</IfModule>

/etc/httpd/conf/test_conf/workers.properties

worker.list=loadbalancer,status

worker.node1.port=8009
worker.node1.Host=192.168.1.100
worker.node1.type=ajp13
worker.node1.lbfactor=2
worker.node1.ping_mode=A
worker.node1.connect_timeout=10000
worker.node1.prepost_timeout=10000
worker.node1.socket_timeout=90
worker.node1.connection_pool_timeout=600
worker.node1.method=R
worker.node1.fail_on_status=500,501,502,503

worker.node2.reference=worker.node1
worker.node2.Host=192.168.1.200

worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=true
worker.status.type=status

/etc/httpd/conf/test_conf/httpd-ssl.conf

<IfModule ssl_module>
Listen 192.200.10.100:443

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R,L]

(snip)
<VirtualHost 192.200.10.100:443>

DocumentRoot "/var/www/test.com/htdocs"
ServerName test.com
(snip)
SSLEngine on
SSLProtocol all -SSLv2 
SSLCipherSuite DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA

SSLCertificateFile "conf/test_conf/ssl/test_com.crt"
SSLCertificateKeyFile "conf/test_conf/ssl/test_com.key"
SSLCACertificateFile "conf/test_conf/ssl/VerisignIntermediate.crt"


BrowserMatch ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

JkMount /* loadbalancer
JkUnMount /error* loadbalancer

JkStripSession On

</VirtualHost>
</IfModule>
2
feniix