Linux下使用Apache+OpenSSL實現HTTPS


為了使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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM