配置Apache SSL,然后使用mod重定向到Tomcat
我试图将我的主服务器配置为接受端口443上的SSL连接。
我有www.mydomain.com域,我刚刚使用mod_jk连接Apache2和Tomcat,现在我也希望接受来自Web的https请求。
这是我的配置:
httpd.conf文件
<IfModule mod_jk.c>
JKWorkersFile /etc/apache2/workers.properties
JkShmFile /var/log/apache2/mod_jk.shm
JKLogFile /var/log/apache2/mod_jk.log
JkLogLevel debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
</IfModule>
<VirtualHost *:80>
DocumentRoot "/Library/ApacheTomcat/apache-tomcat-6.0.33/webapps/MyTomcatAppName"
ServerName www.mydomain.com
ErrorLog "/private/var/log/apache2/www.mydomain.com-error_log"
CustomLog "/private/var/log/apache2/www.mydomain.com-access_log" common
JkMountCopy On
JkMount /* ajp13
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Library/ApacheTomcat/apache-tomcat-6.0.33/webapps/MyTomcatAppName"
ServerName mydomain.com
ErrorLog "/private/var/log/apache2/mydomain.com-error_log"
CustomLog "/private/var/log/apache2/mydomaino.com-access_log" common
JkMountCopy On
JkMount /* ajp13
</VirtualHost>
然后这是我的Worker.properties文件:
worker.list=ajp13
worker.ajp13.type=ajp13
worker.ajp13.host=localhost
worker.ajp13.port=8009
这是我的server.xml:
<Host name="localhost" appBase="/Library/ApacheTomcat/apache-tomcat-6.0.33/webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/Library/ApacheTomcat/apache-tomcat-6.0.33/webapps/MyTomcatAppName" />
有了这个配置,当我访问http:// www.mydomain.com或http:// domain.com时,我正确地浏览了MyTomcatAppName ...现在,我的问题是使用https连接访问同一网站,因此https:// www .mydomain.com或https:// domain.com。 我的Mac Mini服务器(Lion osx)上也安装了GoDaddy证书,因此如果我输入https:// www.mydomain.com(或https:// domain.com),浏览器会正确告知我是否存在“mydomain.com”的证书,但它也说:
Forbidden
You don't have permission to access / on this server.
Apache/2.2.20 (Unix) mod_ssl/2.2.20 OpenSSL/0.9.8r DAV/2 mod_jk/1.2.30 Server at mydomain.com Port 443
我确定这是因为我错过了虚拟主机标签中的东西....所以我该如何解决它?
我找到了解决方案,所以我的Apache和Tomcat工作正常......我将总结解决问题的步骤:
考虑到,你有mydomain证书(由GoDaddy签名)正确安装并存储在我的Mac服务器的Apple KeyChain内。
私钥:
umask 0077
openssl pkcs12 -in pkfilename.p12 -nocerts -nodes -out filename-key.pem
umask 0022
证书:
openssl pkcs12 -in certfilename.p12 -clcerts -nokeys -out filename-cert.pem
复制/ etc / apache2 /目录中的filename-key.pem和filename-cert.pem
VirtualHost
。 无论如何,为每个您希望保护的ServerName添加1个VirtualHost,例如我只想保护mydomain.com传入连接:
<VirtualHost _default_:443>
DocumentRoot "/Library/ApacheTomcat/apache-tomcat-6.0.33/webapps/MyServerAppName"
ServerName mydomain.com
ErrorLog "/private/var/log/apache2/https_mydomain.com-error_log"
CustomLog "/private/var/log/apache2/https_mydomain.com-access_log" common
SSLEngine On
SSLCertificateFile /etc/apache2/filename-cert.pem
SSLCertificateKeyFile /etc/apache2/filename-key.pem
JkMountCopy On
JkMount /* ajp13
</VirtualHost>
在httpd.conf文件中添加Listen 443
,只需在Listen 80
开头添加下面这行。
您现在可以浏览http:// mydomain.com和https:// mydomain.com。 如果发生错误,您可以读取/var/log/apache2/
的日志文件。
特别感谢Bruno用户,如何帮助我创建私钥和证书文件(步骤3和4)。
我希望这个指南可以帮助你在mod_jk上配置Apache和Tomcat来实现安全的SSL连接。
您已经在虚拟主机中为普通的HTTP请求配置了mod_jk( VirtualHost *:80
)。 您还需要在HTTPS虚拟主机中配置这些Jk*
选项( VirtualHost *:443
),您已在其中配置了SSL设置。
上一篇: Configure Apache SSL and then redirect to Tomcat with mod