把ssl模塊加入到已經編譯好的apache中實現HTTPS

爲了使Apache支持https訪問,系統須要安有apache、openssl、mod_ssl.sophp

一、安裝openssl:apache

基本上系統都已經安裝了,在/usr/bin/openssl下,直接使用openssl命令便可;若是系統未安裝,則下載openssl進行安裝。服務器

二、安裝mod_ssl.so:網站

如今Apache都自帶了這個模塊,默認是不安裝的。安裝方式有兩種:靜態編譯和動態加載。ui

靜態編譯:即在編譯安裝apache的時候,在./configure的時候添加--enable--ssl,這樣mod_ssl.so模塊就加載進了Apache。(若是已經static編譯過的模塊,再次修改httpd.conf方式用loadmodule命令,在啓動apache時會報"模塊名" is built-in and can't be loaded.的錯誤。)server

動態編譯:無需從新編譯apache,使用whereis openssl查找openssl路徑,直接進入[source]/modules/ssl;執行[apache]/bin/apxs -a -i -c -L/usr/lib/openssl/engines/lib -c *.c -lcrypto -lssl -ldl;對象

若是執行上面的命令失敗,請執行如下命令,驗證成功ssl

/usr/local/apache24/bin/apxs -a -i -DHAVE_OPENSSL=1 -I/usr/include/openssl -L/usr/lib64/openssl -c *.c -lcrypto -lssl -ldl源碼

這種方式加載以後,在apache的安裝目錄下的modules目錄會生成一個mod_ssl.so,同時httpd.conf中會增長一行LoadModule php5_module modules/libphp5.so([apache]表示Apache的安裝目錄,[source]表示Apache源碼目錄)openssl

注:

apxs命令參數說明:
-i  此選項表示須要執行安裝操做,以安裝一個或多個動態共享對象到服務器的modules目錄中。
-a  此選項自動增長一個LoadModule行到httpd.conf文件中,以激活此模塊,或者,若是此行已經存在,則啓用之。
-A  與 -a 選項相似,可是它增長的LoadModule命令有一個井號前綴(#),即此模塊已經準備就緒但還沒有啓用。
-c  此選項表示須要執行編譯操做。它首先會編譯C源程序(.c)files爲對應的目標代碼文件(.o),而後鏈接這些目標代碼和files中其他的目標代碼文件(.o和.a),以生成動態共享對象dsofile 。若是沒有指定 -o 選項,則此輸出文件名由files中的第一個文件名推測獲得,也就是默認爲mod_name.so 

三、生成密鑰和證書:

新建一個目錄testCA或者直接進入Apache安裝目錄下的conf目錄;

創建三個文件(否則爲網站服務器簽署證書的時候會報錯):

mkdir newcerts 

echo "01" > serial

touch index.txt

創建服務器密鑰:

openssl genrsa -des3 1024  > server.key

從密鑰中刪除密碼(以免系統啓動後被詢問口令):

openssl rsa -in  server.key >  server2.key

替換文件:

mv  server2.key  server.key

創建服務器密鑰請求文件:

openssl req -new -key server.key -out server.csr

創建服務器證書:

openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365

四、Apache添加SSL支持:

修改httpd.conf,去掉 Include conf/extra/httpd-ssl.conf 行首的「#」

五、修改httpd-ssl.conf:

修改端口Listen 443

(若生成的server.crt、server.key、server.csr等文件是在testCA目錄下,還須要修改SSLCertificateFile等的路徑)

六、重啓Apache服務器:

七、輸入https://網站進行驗證,成功則表示已經支持ssl

相關文章
相關標籤/搜索