【问题标题】:How to install mod_ssl for Apache httpd?如何为 Apache httpd 安装 mod_ssl?
【发布时间】:2011-07-12 14:14:35
【问题描述】:

好的

所以我前一阵子安装了 Apache httpd,最近又回来尝试设置 SSL 并让它为几个不同的 tomcat 服务器提供服务。

目前,我有两个完全独立的 Tomcat 实例,它们服务于稍微不同的版本(一个用于开发,一个用于演示)我的网络应用程序到两个不同的端口:

  • example.com:8081
  • example.com:8082

我已经成功(早在 1 月)使用 mod_jkhttpdhttp://www.example.com:8090/devhttp://www.example.com:8090/demo 提供相同的 Tomcat 实例(8090 因为我通过 Jetty 在 8080 上运行了另一个应用程序这个阶段)在httpd.conf中使用以下代码:

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug

<VirtualHost *:8090>
    JkMount /devd* tomcatDev
    JkMount /demo* tomcatDemo
</VirtualHost>

我不想做的是启用 SSL。

我已将以下内容添加到httpd.conf

Listen 443
<VirtualHost _default_:443>
    JkMount /dev* tomcatDev
    JkMount /demo* tomcatDemo
    SSLEngine on
    SSLCertificateFile "/opt/httpd/conf/localhost.crt"
    SSLCertificateKeyFile "/opt/httpd/conf/keystore.key"
</VirtualHost>

但是当我尝试使用 apachectl restart 重新启动 Apache 时(是的,在关闭我提到的其他应用程序之后,它不会玩弄 https 连接)我不断收到错误:

“SSLEngine”命令无效,可能拼写错误或由服务器配置中未包含的模块定义。 httpd 没有运行,正在尝试启动

我查看了httpd/modules 目录,确实没有mod_ssl,只有mod_jk.sohttpd.exp

我试过用 yum 安装mod_ssl,它说它已经安装了。事实上,我可以在/usr/lib/httpd/modules 中找到mod_ssl.so,但这不是我安装httpd 的路径,即/opt/httpd,实际上/usr/lib/httpd 只包含modules 目录。

谁能告诉我如何为我的安装位置httpd 正确安装mod_ssl,以便我可以克服这个错误?

【问题讨论】:

    标签: apache ssl httpd.conf webmin virtualmin


    【解决方案1】:

    还有其他LoadModule 命令引用/usr/lib/httpd/modules 文件夹中的模块吗?如果是这样,您只需将 LoadModule ssl_module /usr/lib/httpd/modules/mod_ssl.so 添加到您的 conf 文件中就可以了。

    否则,您需要将mod_ssl.so 文件复制到正在加载其他模块的任何目录并在那里引用它。

    【讨论】:

    • 在我的 Apache 安装中,mod_ssl.so 完全丢失了。结果它与基本安装分开,并且位于 yum 包管理器中的包 mod_ssl 下。使用yum install mod_ssl 下载然后它出现在modules 文件夹中。
    • 我在编译我自己的 apache 2 后发现 mod_ssl.so 丢失了。需要从头开始重新编译。
    • @ug_ 谢谢,我确认在安装模块后它包含了该模块并添加了一个具有所需配置的ssl.conf 文件。
    【解决方案2】:

    我发现我需要在 Apache 中启用 SSL 模块(如果您不是以 root 身份运行,显然需要在命令前加上 sudo):

    a2enmod ssl
    

    然后重启 Apache:

    /etc/init.d/apache2 restart
    

    更多关于 Ubuntu / Debian 的 Apache 中 SSL 的详细信息here

    【讨论】:

    • 您使用的是哪个发行版操作系统?
    • @Naga a2enmod 来自 Debian 世界。
    【解决方案3】:

    尝试使用以下命令安装mod_ssl

    yum install mod_ssl
    

    然后使用以下命令重新加载并重新启动您的 Apache 服务器:

    systemctl reload httpd.service
    systemctl restart httpd.service
    

    这应该适用于大多数情况。

    【讨论】:

    • 如果您从源代码安装 Apache,则 yum 将无法检测到它。相反,它将安装 Apache 的重复(过时)版本,并将 mod_ssl.so 放入 that Apache 的模块文件中。
    【解决方案4】:

    我用过:

    sudo yum install mod24_ssl
    

    它在我的 Amazon Linux AMI 中运行。

    【讨论】:

      【解决方案5】:

      我不知道它是否仍然令人感兴趣,以及自从帖子发布以来情况是否发生了变化,但我系统上的 /etc/apache2/apache2.conf 说:

      mods-enabled/、conf-enabled/ 和 sites-enabled/ 中的配置文件 目录包含管理模块的特定配置 sn-ps, 全局配置片段,或虚拟主机配置, 分别。

      它们是通过符号链接从它们的可用配置文件中激活的 各自的 *-available/ 对应物。这些应该通过使用我们的管理 助手 a2enmod/a2dismod、a2ensite/a2dissite 和 a2enconf/a2disconf。看 他们各自的手册页以获取详细信息。

      在我的系统上,模块安装在 /usr/lib/apache2/modules 中。 我正在运行 Ubuntu 20.04.2 LTS。

      【讨论】:

        猜你喜欢
        • 2015-10-05
        • 2019-07-13
        • 2012-03-15
        • 2012-06-23
        • 2014-06-21
        • 2017-07-14
        • 2015-05-30
        • 2012-12-09
        • 2013-11-07
        相关资源
        最近更新 更多