У меня есть 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.