如何为Apache httpd安装mod_ssl?

时间:2011-03-10 09:55:55

标签: ssl apache

确定

所以我前一段时间安装了Apache httpd,并且最近回到它尝试设置SSL并让它为几个不同的tomcat服务器提供服务。

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

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

我已成功(早在1月)使用mod_jkhttpd将这些相同的Tomcat实例提供给http://www.example.com:8090/devhttp://www.example.com:8090/demo(8090 cos我有另一个在此阶段通过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,它已经安装了它。确实,我可以在mod_ssl.so中找到/usr/lib/httpd/modules,但这不是我安装httpd /opt/httpd的路径,/usr/lib/httpd实际上modules只包含mod_ssl目录。

有人可以告诉我如何正确安装httpd我安装的​​{{1}}位置,以便我可以解决此错误吗?

5 个答案:

答案 0 :(得分:86)

我发现我需要在Apache中启用SSL模块(如果你没有以root用户身份运行,显然会使用sudo前缀命令):

a2enmod ssl

然后重启Apache:

/etc/init.d/apache2 restart

Apache for Ubuntu / Debian here中的SSL的更多细节。

答案 1 :(得分:32)

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

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

答案 2 :(得分:16)

尝试使用以下命令安装mod_ssl

yum install mod_ssl

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

systemctl reload httpd.service
systemctl restart httpd.service

这适用于大多数情况。

答案 3 :(得分:1)

我用过:

sudo yum install mod24_ssl

它可以在我的Amazon Linux AMI中使用。

答案 4 :(得分:0)

我不知道它是否仍然令人感兴趣,以及自从该线程发布后情况是否发生了变化,但我系统上的 /etc/apache2/apache2.conf 显示:

<块引用>

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

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

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