如何为Apache httpd安装mod_ssl?

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

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

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

我已经成功(在1 mod_jk )使用mod_jk来让httpd为那些相同的Tomcat实例提供http://www.example.com:8090/devhttp://www.example.com:8090/demo因为我在这个阶段通过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 (是的closures了我提到的其他应用程序,所以它不玩弄https连接),我不断得到的错误:

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

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

我试过用yum来安装mod_ssl ,它说已经安装了。 实际上,我可以在/usr/lib/httpd/modulesfindmod_ssl.so ,但这不是我安装httpd的path,它是/opt/httpd ,实际上/usr/lib/httpd包含modules目录。

任何人都可以告诉我如何正确安装mod_ssl为我安装的httpd位置,所以我可以通过这个错误?

是否有任何其他LoadModule命令引用/usr/lib/httpd/modules文件夹中的/usr/lib/httpd/modules ? 如果是这样的话,只要将LoadModule ssl_module /usr/lib/httpd/modules/mod_ssl.so添加到conf文件即可。

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

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

 a2enmod ssl 

然后重新启动Apache:

 /etc/init.d/apache2 restart 

在这里 Ubuntu的Debian的Apache的更多细节。

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

 yum install mod_ssl 

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

 systemctl reload httpd.service systemctl restart httpd.service 

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