gpt4 book ai didi

apache - 配置 Apache SSL,然后使用 mod_jk 重定向到 Tomcat

转载 作者:行者123 更新时间:2023-11-28 21:47:37 25 4
gpt4 key购买 nike

我正在尝试将我的家庭服务器配置为在端口 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 工作正常...我将总结解决问题的步骤:

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

  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 配置,您只需要为 443(https 端口)连接再添加 2 个 VirtualHost
  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 连接。

关于apache - 配置 Apache SSL,然后使用 mod_jk 重定向到 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8402689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com