Назад | Перейти на главную страницу

https root webapp в jboss 5 через apache mod_proxy с ajp

У меня есть apache 2.2.3 и jboss 5.1, установленные на моем сервере, в apache у меня есть 2 приложения в php + mysql и в jboss, которые у меня есть в корневом приложении (/) на портале liferay. Я использовал mod_proxy для доступа к приложению jboss:

<VirtualHost server_ip:80>
ServerName intranet.mycompany.com
ProxyPreserveHost On
ProxyPass / balancer://jbosscluster/
ProxyPassReverse / http://server_ip:8080
</VirtualHost>

но теперь мне нужно включить https только в intranet.mycompany.com, и я не знаю, где настроить ssl, в apache, jboss и то и другое. Я пробовал использовать jboss в server.xml, создав самоподписанный сертификат с помощью keytool, но apache не пересылает https: // server_ip: 8443

буду признателен за вашу помощь.

Если все находится на одном сервере, все, что вам нужно сделать, это настроить SSL в Apache - вы убедитесь, что mod_ssl установлен, и в значительной степени используете стиль конфигурации по умолчанию для его запуска. Связь Apache <=> JBoss будет происходить внутри того же сервера, как обычно, и не будет зашифрована.

Учитывая стандартную коробку Linux (например, CentOS) с установленным пакетом mod_ssl:

# SSL Basics
LoadModule ssl_module modules/mod_ssl.so
Listen 443
NameVirtualHost *:443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin

<VirtualHost _default_:443>
  ...config stuff...
  ServerName intranet.mycompany.com
  ProxyPreserveHost On
  ProxyPass / balancer://jbosscluster/
  ProxyPassReverse / http://127.0.0.1:8080

  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
  SSLCertificateFile /path/to/server.pem
  SSLCertificateKeyFile /path/to/server.pem

  <Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
  </Files>

  SetEnvIf User-Agent ".*MSIE.*" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0

  CustomLog logs/ssl_request_log \
    "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

  ...more config stuff...
</VirtualHost>

Файл server.pem содержит как незашифрованный ключ сервера, так и сертификат сервера, возвращенный вышестоящим органом.

/usr/bin/openssl genrsa -des3 1024 > server.key.encrypted
/usr/bin/openssl rsa -in server.key.encrypted -out server.key

/usr/bin/openssl req -new -key server.key -out server.csr

cat server.key > server.pem
cat server.crt >> server.pem

Это основная идея: server.crt - это файл, возвращаемый вам от Thawte и т. Д. После того, как вы передали им файл server.csr (и деньги).

Ответ troyengel предоставит вам доступ по HTTPS через вашу конфигурацию Apache, но если я правильно понял ваш вопрос, вам нужно intranet.mycompany.com быть доступным только по HTTPS, а не по HTTP?

В этом случае я бы изменил ваше существующее объявление VirtualHost таким образом, чтобы оно выглядело примерно так:

<VirtualHost server_ip:80>
    ServerName intranet.mycompany.com

    RewriteEngine On

    RewriteCond %{HTTPS} !=on
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</VirtualHost>

Это в дополнение к конфигурации SSL VirtualHost troyengel. Затем это должно перенаправить все, что будет http://intranet.mycompany.com -> https://intranet.mycompany.com автоматически сохраняет запрошенный URI.