如何为Apache httpd安装mod_ssl?

88

好的

我一段时间前安装了Apache httpd,最近回来尝试设置SSL并将其用于多个不同的Tomcat服务器。

目前,我有两个完全独立的Tomcat实例,分别为开发版和演示版,它们向两个不同的端口提供我的Web应用程序:

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

我已经成功地(在1月份)使用了mod_jk,通过以下代码在httpd.conf中实现将httpd服务这些相同的Tomcat实例到http://www.example.com:8090/devhttp://www.example.com:8090/demo(8090是因为此时我还在8080上通过Jetty运行另一个应用程序):

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目录外什么都没有。

有人可以告诉我如何正确安装mod_ssl以适合我已安装的httpd位置,以便我可以解决此错误吗?

5个回答

123

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

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

a2enmod ssl

然后重新启动Apache:

/etc/init.d/apache2 restart

在Ubuntu/Debian上Apache中SSL的更多详细信息在这里


你正在使用哪个发行版的操作系统? - Naga
4
@a2enmod来自Debian世界。 - Z4-tier

43

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

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


21
在我的 Apache 安装中,mod_ssl.so 明显地不见了。结果发现它与基本安装是分开的,并在 yum 包管理器中的 mod_ssl 套件下。使用 yum install mod_ssl 下载后,它出现在 modules 文件夹中。 - ug_
在编译自己的 Apache 2 后,我发现 mod_ssl.so 文件丢失了。需要从头再次编译它。 - frumbert
@ug_ 谢谢,我确认安装模块后它已经包含了该模块,并添加了一个 ssl.conf 文件,其中包含所需的配置。 - Accountant م

34

尝试使用以下命令安装mod_ssl

yum install mod_ssl

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

systemctl reload httpd.service
systemctl restart httpd.service

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


1
如果您从源代码安装Apache,则yum将无法检测到它。相反,它将安装一个重复的(过时的)Apache版本,并将mod_ssl.so放在 Apache的模块文件中。 - Mike Flynn

6

我使用了:

sudo yum install mod24_ssl

它在我的Amazon Linux AMI中运行正常。


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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接