為了使Apache支持https訪問,系統需要安有apache、openssl、mod_ssl.so
1、安裝openssl:
基本上系統都已經安裝了,在/usr/bin/openssl下,直接使用openssl命令即可;如果系統未安裝,則下載openssl進行安裝。
2、安裝mod_ssl.so:
現在Apache都自帶了這個模塊,默認是不安裝的。安裝方式有兩種:靜態編譯和動態加載。
靜態編譯:即在編譯安裝apache的時候,在./configure的時候添加--enable--ssl,這樣mod_ssl.so模塊就加載進了Apache。(如果已經static編譯過的模塊,再次修改httpd.conf方式用loadmodule命令,在啟動apache時會報"模塊名" is built-in and can't be loaded.的錯誤。)
動態編譯:無需重新編譯apache,直接進入[source]/modules/ssl;執行[apache]/bin/apxs -a -i -c -L/usr/lib/openssl/engines/lib -c *.c -lcrypto -lssl -ldl;這種方式加載之后,在apache的安裝目錄下的modules目錄會生成一個mod_ssl.so,同時httpd.conf中會增加一行LoadModule php5_module modules/libphp5.so([apache]表示Apache的安裝目錄,[source]表示Apache源碼目錄)
注:
apxs命令參數說明:
-i 此選項表示需要執行安裝操作,以安裝一個或多個動態共享對象到服務器的modules目錄中。
-a 此選項自動增加一個LoadModule行到httpd.conf文件中,以激活此模塊,或者,如果此行已經存在,則啟用之。
-A 與 -a 選項類似,但是它增加的LoadModule命令有一個井號前綴(#),即此模塊已經准備就緒但尚未啟用。
-c 此選項表示需要執行編譯操作。它首先會編譯C源程序(.c)files為對應的目標代碼文件(.o),然后連接這些目標代碼和files中其余的目標代碼文件(.o和.a),以生成動態共享對象dsofile 。如果沒有指定 -o 選項,則此輸出文件名由files中的第一個文件名推測得到,也就是默認為mod_name.so
3、生成密鑰和證書:
新建一個目錄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
4、Apache添加SSL支持:
修改httpd.conf,去掉 Include conf/extra/httpd-ssl.conf 行首的“#”
5、修改httpd-ssl.conf:
修改端口Listen 443
(若生成的server.crt、server.key、server.csr等文件是在testCA目錄下,還需要修改SSLCertificateFile等的路徑)
6、重啟Apache服務器:
7、輸入https://網站進行驗證,成功則表示已經支持ssl