83

好的

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

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

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

我已经成功地(早在一月份)使用以下代码mod_jkhttpd这些相同的 Tomcat 实例提供服务,http://www.example.com:8090/dev并且http://www.example.com:8090/demo (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>

但是当我尝试重新启动 Apache 时apachectl restart(是的,在关闭我提到的其他应用程序之后,它不会玩弄 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以便我可以克服这个错误?

4

5 回答 5

113

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

a2enmod ssl

然后重新启动 Apache:

/etc/init.d/apache2 restart

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

于 2013-06-26T12:00:16.990 回答
40

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

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

于 2011-03-10T14:18:03.277 回答
31

尝试mod_ssl使用以下命令安装:

yum install mod_ssl

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

systemctl reload httpd.service
systemctl restart httpd.service

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

于 2016-10-05T12:20:06.913 回答
4

我用了:

sudo yum install mod24_ssl

它在我的 Amazon Linux AMI 中运行。

于 2018-11-27T03:53:32.807 回答
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。

于 2021-03-04T16:43:35.187 回答