如何为Apache httpd安装mod_ssl?


76

因此,我httpd前段时间安装了Apache ,最近又回到了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 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>

但是,当我尝试使用重新启动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以便我能够克服此错误?

Answers:


39

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

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


18
在我的Apache安装mod_ssl.so中完全丢失了。证明它与基本安装分开,并且mod_ssl位于yum软件包管理器中的软件包下。使用下载,yum install mod_ssl然后出现在modules文件夹中。
2016年

在编译自己的Apache 2之后,我发现mod_ssl.so丢失了。需要从头开始重新编译。
frumbert

@ug_谢谢,我确认在安装模块后,它包括该模块,并且还添加了ssl.conf具有所需配置的文件。
会计师م18年

103

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

a2enmod ssl

然后重新启动Apache:

/etc/init.d/apache2 restart

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


您正在使用哪个发行版OS?
娜迦

2
@Nagaa2enmod来自Debian世界。
Z4层

25

尝试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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.