Apache配置HTTPS功能

apache配置https

1、yum 安裝openssl和openssl-devel,httpd-devel
2、生成證書(也能夠從公司的證書頒發機構獲取):
#創建服務器密鑰  
openssl genrsa -des3 1024  > /usr/local/apache/conf/server.key   
# 從密鑰中刪除密碼(以免系統啓動後被詢問口令) 
openssl rsa -in /usr/local/apache/conf/server.key > /usr/local/apache/conf/server2.key
mv /usr/local/apache/conf/server2.key  /usr/local/apache/conf/server.key
#創建服務器密鑰請求文件
openssl req -new -key /usr/local/apache/conf/server.key -out /usr/local/apache/conf/server.csr
5>openssl x509 -in /usr/local/apache/conf/server.csr -out
# 創建服務器證書  
/usr/local/apache/conf/server.crt -req -signkey /usr/local/apache/conf/server.key -days 365
3、修改Apache的配置文件httpd.conf

打開ssl模塊,沒有這個模塊就須要安裝依賴包:mod_ssl,安裝後就會在modules裏面找到:web

LoadModule ssl_module         modules/mod_ssl.so

引入ssl配置文件,增長支持ssl:apache

Include conf/extra/httpd-ssl.conf(去掉行首的註釋)
  • 啓動重定向(可選),使用用戶HTTP訪問自動重定向爲HTTPS,直接在http.conf最後配置便可,在httpd.conf文件尾加入以下內容:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R]
4、修改加密文件ssl.conf,經過yum安裝好的httpd,在conf.d目錄下面有ssl.conf配置文件,咱們須要在裏面配置一個VirtualHost和配置證書和密鑰:
LoadModule ssl_module modules/mod_ssl.so
Listen 443
SSLPassPhraseDialog  builtin
SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW:!RC4:

<VirtualHost _default_:443>     # 必須有一個虛擬主機,這樣纔可使用跳轉功能和使用443端口訪問
DocumentRoot "/home/store/webroot"
Servername https://xxx.com/
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLCertificateFile /etc/httpd/conf/cert/xxx.com.crt
SSLCertificateKeyFile /etc/httpd/conf/cert/xxx.com.key
</VirtualHost>
5、重啓Apache

service httpd restart瀏覽器

  1. 在瀏覽器輸入https://域名 或者 域名:443,若是兩個能正常訪問,表示https已經配置成功。
  2. 在瀏覽器輸入 域名,若是可以正常跳轉到https鏈接上,那說明跳轉功能正常。
  • 啓動apache 碰到下面問題:
Invalid command 'SSLPassPhraseDialog', perhaps misspelled or defined by a module not included in the server configuration

到apache的bin 目錄下面執行 ./httpd -l 看看有沒有mode_ssl.c,這個錯誤說明ssl模塊安裝沒有成功。
解決辦法:服務器

  • 一、從新編譯apache,加上--enable-ssl --with-ssl參數dom

  • 二、把ssl模塊加入到已經編譯好的apache中
    首先,使用 whereis openssl 命令獲取lib和include的路徑ui

[root@robot /usr/local/apache/modules]# whereis openssl
openssl: /usr/bin/openssl /usr/lib/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz

而後 在apache 源碼的modules/ssl文件夾下,使用命令/usr/sbin/apxs -i -a -D HAVE_OPENSSL=1 -I/usr/include/openssl/ -L/usr/lib/openssl/ -c *.c -lcrypto -lssl -ldl(apxs須要安裝http-devel纔有,雖然如此,我仍是沒有編譯成功,因而就在其餘已經編譯了這個模塊的機器上拷貝mod_ssl.so到apache模塊目錄/usr/local/apache/modules)加密

相關文章
相關標籤/搜索