【问题标题】:Configure Apache SSL and then redirect to Tomcat with mod_jk配置 Apache SSL,然后使用 mod_jk 重定向到 Tomcat
【发布时间】:2012-01-14 05:15:22
【问题描述】:

我正在尝试将我的家庭服务器配置为接受端口 443 上的 SSL 连接。

我有 www.mydomain.com 域,我刚刚使用 mod_jk 链接了 Apache2 和 Tomcat,现在我也希望接受来自网络的 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 ssl mod-jk


    【解决方案1】:

    我找到了解决方案,所以我的 Apache 和 Tomcat 工作正常... 我来总结一下解决问题的步骤:

    考虑到,您已正确安装 mydomain 证书(由 GoDaddy 签名)并将其存储在我的 Mac 服务器的 Apple KeyChain 中。

    1. 打开 KeyChain App(使用 root),展开 mydomain 证书标签,这样您也可以看到私钥。
    2. 以 p12 扩展名保存两者,然后从 .p12 生成 .pem 文件
    3. 私钥:

      umask 0077
        openssl pkcs12 -in pkfilename.p12 -nocerts -nodes -out filename-key.pem
      umask 0022
      
    4. 证书:

      openssl pkcs12 -in certfilename.p12 -clcerts -nokeys -out filename-cert.pem
      
    5. 在/etc/apache2/目录下复制filename-key.pem和filename-cert.pem

    6. 考虑到您与上面显示的 httpd.conf 配置相同,您只需要再添加 2 个 VirtualHost 用于 443(https 端口)连接。
    7. 无论如何,为您希望保护的每个 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>
      
    8. 在 httpd.conf 文件中添加Listen 443,只需在开头的Listen 80 下添加这一行。

    您现在可以浏览 http://mydomain.com 和 https://mydomain.com。 如果出现错误,您可以读取/var/log/apache2/ 中的日志文件。

    特别感谢 Bruno 用户,帮助我创建私钥和证书文件(步骤 3 和 4)。

    我希望本指南可以帮助您在 mod_jk 上配置 Apache 和 Tomcat 以实现安全 SSL 连接。

    【讨论】:

      【解决方案2】:

      您已在虚拟主机中为纯 HTTP 请求 (VirtualHost *:80) 配置了 mod_jk。您还需要在 HTTPS 虚拟主机 (VirtualHost *:443) 中配置这些 Jk* 选项,您已在其中配置了 SSL 设置。

      【讨论】:

      • 如果在您访问https://www.mydomain.com/ 时收到 HTTP 响应(禁止),则 HTTPS 已经在工作,因此您必须以某种方式在某处配置了 SSL* 选项。尝试将虚拟主机设置在它们所在的位置(如果不存在,则使用VirtualHost *:443 创建一个)并将Jk* 选项放在那里。
      • 我忘了在 VirtualHost 中添加证书和私钥,您帮我在其他帖子中创建它们,所以现在我已经在我的回答中总结了步骤...非常感谢...
      • 我也遇到同样的问题,设置后也没有解决。我已将我的问题添加为stackoverflow.com/questions/21308928/…
      猜你喜欢
      • 2012-11-18
      • 1970-01-01
      • 2016-07-11
      • 2011-06-23
      • 2021-04-12
      • 2012-12-23
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多