實現HTTPS--Apache+Openssl
阿新 • • 發佈:2020-08-17
https,全稱 hypertext transfer protocol secure,安全的超文字傳輸協議
廣泛應用於全球資訊網上安全敏感的通訊
實驗步驟:
1.開啟apache的ssl模組
#取消以下兩行的註釋
LoadModule ssl_module modules/mod_ssl.so
Include etc/extra/httpd-ssl.conf
2.CA證書申請(實驗環境)
#建立存放金鑰和證書檔案的目錄
mkdir /usr/local/apache2/cert && cd /usr/local/apache2/cert
(1)生成伺服器私鑰,RSA金鑰
openssl genrsa -out ca.key 1024
(2)生成csr證書檔案,依次輸入國家、地區、城市、組織、組織單位、名字或域名、email等
openssl req -new -key ca.key -out ccku.csr
(3)設定證書檔案*.crt的有效期等資訊
openssl x509 -req -days 365 -sha256 -in ccku.csr -signkey ca.key -out ccku.crt
3.修改配置檔案
(1)修改 httpd-ssl.conf檔案,呼叫證書
#vim /usr/local/apache2/etc/extra/httpd-ssl.conf #註釋掉不安全的協議 #新增: SSLProtocol all -SSLv2 -SSLv3 #修改加密套件 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM SSLHonorCipherOrder on SSLCertificateFile cert/ccku.crt SSLCertificateKeyFile cert/ca.key
(2)修改apache的主配置檔案,新增虛擬主機
<VirtualHost _default_:443>
DocumentRoot "/usr/local/apache2/htdocs"
ServerName localhost:443
SSLCertificateFile cert/ccku.crt
SSLCertificateKeyFile cert/ca.key
SSLCertificateChainFile cert/ccku.crt
</VirtualHost>
4.驗證
(1)檢查配置檔案語法
apachectl -t
#報錯提示:
AH00526: Syntax error on line 83 of /usr/local/apache2/etc/extra/httpd-ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).
#解決辦法:修改主配置檔案呼叫該模組
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so #取消註釋
重新檢查語法驗證
#apachectl -t
Syntax OK
(2)重啟apache,使用https測試
apachectl restart
5.強制跳轉https
#vim /usr/local/apache2/etc/httpd.conf
#在<Directory "/usr/local/apache2/htdocs">標籤下新增:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https//%{SERVER_PORT}/$1 [R=301,L]
6.關閉https的方法:
1.ssl配置檔案呼叫
2.虛擬主機
3.跳轉