Я пытаюсь оценить инфраструктуру для клиента на моей локальной машине win32. Инфраструктура должна быть основана на j2ee webapp, запущенном на tomcat (6.0.20+), за secur apache httpd (httpd-2.2.16 / openssl-0.9.8), который пересылает только те запросы, которые авторизованы (с клиентом сертификат).
Мой подход заключался в том, чтобы решить связь между tomcat и apache с помощью mod_jk
и соответствующие ajp13
протокол. Tomcat (ajp13) работает на порту 8099
, я настроил workers.properties
и мой mod_jk.conf
(и включил его в httpd.conf
). Подключение работает успешно. Httpd работает на порту 80
кот запускает свой http-порт под 8084
. При отправке http-запроса на http://localhost/my-webapp-context
. Котики отвечают и показывают мое веб-приложение.
Пока есть следующие файлы конфигурации:
LoadModule jk_module modules/mod_jk.so
#LoadModule ssl_module modules/mod_ssl.so
JkWorkersFile conf/workers.properties
JkShmFile logs/httpd/mod_jk.shm
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkMount /* balancer
worker.list=jk-status
worker.jk-status.type=status
worker.jk-status.read_only=true
worker.list=jk-manager
worker.jk-manager.type=status
worker.list=balancer
worker.balancer.type=lb
worker.balancer.error_escalation_time=0
worker.balancer.max_reply_timeouts=10
worker.balancer.balance_workers=node1
worker.node1.reference=worker.template
worker.node1.host=localhost
worker.node1.port=8109
worker.node1.activation=A
worker.balancer.balance_workers=node2
worker.node2.reference=worker.template
worker.node2.host=localhost
worker.node2.port=8099
worker.node2.activation=A
worker.template.type=ajp13
worker.template.socket_connect_timeout=5000
worker.template.socket_keepalive=true
worker.template.ping_mode=A
worker.template.ping_timeout=10000
worker.template.connection_pool_minsize=0
worker.template.connection_pool_timeout=600
worker.template.reply_timeout=300000
worker.template.recovery_options=3
Как описано, это работает как шарм, теперь я прочитал несколько руководств по ssl. Я уже создал server.key
(без закрытого ключа, потому что это, похоже, не работает на платформе win32) и server.cer
который сертифицирован нашим местным центром сертификации.
Когда дело доходит до включения mod_ssl
я получаю несколько ошибок. Я пробовал следующую конфигурацию:
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile conf/server.cer
SSLCertificateKeyFile conf/server.key
</VirtualHost>
В этой конфигурации я выдаю предстоящую ошибку (где CN - это имя моего компьютера в локальной сети), это также значение, которое я предоставил при создании сертификата. Apache отказывается запускаться с этой конфигурацией и показывает мне указанную ошибку.
Теперь я наконец получил apache с запущенными ssl и клиентскими сертификатами:
LoadModule jk_module modules/mod_jk.so
LoadModule ssl_module modules/mod_ssl.so
JkWorkersFile conf/workers.properties
JkShmFile logs/httpd/mod_jk.shm
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
Listen 443
<VirtualHost *:443>
JkMount /* balancer
SSLEngine On
SSLCertificateFile conf/web.crt
SSLCertificateKeyFile conf/web.key
SSLCACertificateFile conf/exampleCA.crt
SSLVerifyClient require
SSLVerifyDepth 2
<IfDefine SSL>
SSLRequireSSL
SSLRequire %{SSL_CLIENT_S_DN_O} eq "certification-authority" and
%{SSL_CLIENT_S_DN_OU} in {"BALVI"}
</IfDefine>
</VirtualHost>
Капитан Очевидно здесь. Вы дали мое-имя-компьютера точно как есть, включая доменное имя? Если нет, создайте ключ еще раз.
Вы всегда можете добавить перенаправление на apache, чтобы перейти прямо к вашему веб-приложению.
RedirectMatch ^ / (.) / $ http://host.domain.com/your-webapp-context/?