本文示例服務(wù)器環(huán)境:
CentOS 7.2? Apache 2.4? PHP 5.6
如果服務(wù)器環(huán)境不一樣,可能會(huì)有出入够颠。
1. 阿里云申請(qǐng)免費(fèi) CA 證書(shū)
如下圖購(gòu)買(mǎi)免費(fèi) CA 證書(shū),沒(méi)什么過(guò)多解釋了佛呻。
購(gòu)買(mǎi)成功之后會(huì)在證書(shū)控制臺(tái)看到補(bǔ)全證書(shū)信息的鏈接谍憔,點(diǎn)擊去補(bǔ)全即可,如下圖:
如果選擇了“證書(shū)綁定的域名在【阿里云的云解析】產(chǎn)品中...”那個(gè)選項(xiàng)敛摘,是代表要綁定的域名是在當(dāng)前申請(qǐng)證書(shū)的這個(gè)阿里云賬戶(hù)下门烂,如果不在的話(huà),則需要自己去域名管理處添加一條 TXT 的域名解析記錄兄淫,如下圖:
記錄類(lèi)型屯远,主機(jī)記錄,記錄值都在審核進(jìn)度里顯示捕虽,填到域名解析里即可慨丐。
域名解析填寫(xiě)完成之后,點(diǎn)擊上圖最下面右側(cè)的“檢查配置”泄私,如果左側(cè)顯示配置沒(méi)問(wèn)題了房揭,就正式提交審核了备闲。
審核完成后對(duì)應(yīng)的證書(shū)的狀態(tài)會(huì)變?yōu)椤耙押灠l(fā)”,如下圖:
已簽發(fā)之后捅暴,就可以點(diǎn)擊右側(cè)的下載按鈕下載證書(shū)恬砂,去服務(wù)器配置了。
2. 服務(wù)器配置 CA 證書(shū)
Apache 服務(wù)器配置
首先下載證書(shū)蓬痒,如下圖:
下載證書(shū)之后觉既,放到 Apache 安裝根目錄(/etc/httpd)下,可以直接在服務(wù)器上使用wget下載乳幸,也可以下載到本地瞪讼,使用 SCP 上傳到阿里云服務(wù)器:
scp Downloads/21427xxxx63xxx1.zip root@xx.1xx.xx6.xxx:/etc/httpd
接下來(lái)就和阿里云的指南不一樣了。
下面這兩行你會(huì)發(fā)現(xiàn) httpd.conf 里沒(méi)有粹断,因?yàn)?CentOS 已經(jīng)集成了 openssl符欠,我們要做的是手動(dòng)安裝 mod_ssl 模塊。
安裝 mod_ssl 模塊命令如下:
yum install mod_ssl
安裝完成之后瓶埋,編輯 ssl.conf 文件:
vim /etc/httpd/conf.d/ssl.conf
按下圖配置這四個(gè)位置:
如果網(wǎng)站的默認(rèn)目錄有改過(guò)希柿,記得在這個(gè)文件里改一下 443 端口對(duì)應(yīng)的網(wǎng)站默認(rèn)目錄和域名。
然后重啟 Apache:
systemctl restart httpd
至此大功告成养筒。
Apache 下 HTTP 默認(rèn)轉(zhuǎn)發(fā)到 HTTPS
如果想要 80 端口的 http 訪(fǎng)問(wèn)也轉(zhuǎn)發(fā)到 https曾撤,打開(kāi)Apache/conf/httpd.conf,找到 #LoadModule rewrite_module modules/mod_rewrite.so 去掉#號(hào)晕粪,打開(kāi)重定向支持挤悉,然后找到你網(wǎng)站目錄的<Directory>段,修改其中的 AllowOverride None 為 AllowOverride All巫湘,然后重啟 Apache 装悲。
在你網(wǎng)站目錄下放一個(gè).htaccess文件。
編輯器打開(kāi).htaccess文件尚氛,寫(xiě)入如下規(guī)則:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/tz.php
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]
解釋?zhuān)?/p>
%{SERVER_PORT} —— 訪(fǎng)問(wèn)端口
%{REQUEST_URI} —— 比如如果url是 http://localhost/tz.php诀诊,則是指 /tz.php
%{SERVER_NAME} —— 比如如果url是 http://localhost/tz.php,則是指 localhost
以上規(guī)則的意思是阅嘶,如果訪(fǎng)問(wèn)的url的端口不是443属瓣,且訪(fǎng)問(wèn)頁(yè)面不是tz.php,則應(yīng)用RewriteRule這條規(guī)則讯柔。這樣便實(shí)現(xiàn)了:訪(fǎng)問(wèn)了http://localhost/index.php或者http://localhost/admin/index.php等頁(yè)面的時(shí)候會(huì)自動(dòng)跳轉(zhuǎn)到https://localhost/index.php或者https://localhost/admin/index.php抡蛙,但是訪(fǎng)問(wèn)http://localhost/tz.php的時(shí)候就不會(huì)做任何跳轉(zhuǎn),也就是說(shuō)http://localhost/tz.php和https://localhost/tz.php兩個(gè)地址都可以訪(fǎng)問(wèn)磷杏。
Nginx 服務(wù)器配置
如果沒(méi)有使用虛擬機(jī)溜畅,則按照阿里云上的教程配置即可。即
如果使用了虛擬機(jī)极祸,則在對(duì)應(yīng)虛擬機(jī)配置文件上添加以下紅色語(yǔ)句即可慈格。
server {
listen 80;
listen 443 ssl;
server_name pastdust.com www.***.com;
root /www/web/pastdust_com/public_html;
index index.html index.php index.htm;
error_page 400 /errpage/400.html;
error_page 403 /errpage/403.html;
error_page 404 /errpage/404.html;
ssl_certificate cert/214356952770832.pem;
ssl_certificate_key cert/214356952770832.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
include rewrite/***.conf;
}
Nginx 下 HTTP 轉(zhuǎn)發(fā)到 HTTPS
網(wǎng)站強(qiáng)制訪(fǎng)問(wèn)https模式怠晴,將以下的跳轉(zhuǎn)代碼添加到當(dāng)前網(wǎng)站所有使用的偽靜態(tài)規(guī)則conf文件中,即可實(shí)現(xiàn)所有的http訪(fǎng)問(wèn)都跳轉(zhuǎn)到https訪(fǎng)問(wèn)浴捆,并且是繼承目錄的蒜田,具體實(shí)現(xiàn)方法就是把http模式訪(fǎng)問(wèn)301重定向到https模式。
if ($server_port = 80) {
return 301 https://$server_name$request_uri;
}
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
完选泻。