2011-03-10 307 views
50

如何爲Apache httpd安裝mod_ssl?

所以我剛纔安裝了Apache httpd,最近回來給它試圖建立SSL得到它服務於幾個不同的Tomcat服務器。

目前我有兩個完全獨立的Tomcat實例服務了略有不同的版本(一個用於開發,一個用於演示說)我的web應用到兩個不同的端口:

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

我已經成功(一月後)用於mod_jk獲得httpd服務同樣的Tomcat實例來http://www.example.com:8090/devhttp://www.example.com:8090/demo(80 90只因爲我已經有了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連接後)我不斷得到錯誤:

Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration. httpd not running, trying to start

我看了在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所以我可以通過這個錯誤?

回答

28

是否有其他LoadModule命令引用/usr/lib/httpd/modules文件夾中的模塊?如果是這樣,那麼只需在您的conf文件中添加LoadModule ssl_module /usr/lib/httpd/modules/mod_ssl.so即可。

否則,您需要將mod_ssl.so文件複製到其他模塊正在加載的任何目錄中,並在此處引用它。

+9

在我的Apache安裝'mod_ssl.so'完全丟失。與yum軟件包管理器中的'mod_ssl'軟件包不同,它與基本安裝分開。使用'yum install mod_ssl'下載,然後它出現在'modules'文件夾中。 – 2016-03-01 23:30:37

+0

我發現,在編譯我自己的apache 2之後,mod_ssl.so丟失了。需要重新編譯它,從頭開始。 – frumbert 2017-03-13 10:19:15

68

我發現我需要讓Apache中SSL模塊(與sudo明顯前綴的命令,如果你不是以root運行):

a2enmod ssl 

然後重新啓動Apache:

/etc/init.d/apache2 restart 

更多細節Apache for Ubuntu/Debian here。使用下面的命令

+0

你使用哪個發行版操作系統? – 2016-06-28 13:15:22

11

嘗試安裝了mod_ssl:

yum install mod_ssl 

然後重新加載並使用下面的命令重新啓動Apache服務器:

systemctl reload httpd.service 
systemctl restart httpd.service 

這應該對大多數的情況下工作。

+0

如果您從源代碼安裝Apache,那麼yum將無法檢測到它。相反,它會安裝一個重複的(過時的)Apache版本,並將mod_ssl.so放在* that * Apache的模塊文件中。 – 2017-07-02 02:04:10