如何为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/dev
和http://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.so
和httpd.exp
。
我试过用yum来安装mod_ssl
,它说已经安装了。 实际上,我可以在/usr/lib/httpd/modules
findmod_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
这应该适用于大多数情况。