阿里云服務(wù)器使用免費(fèi)的 CA 證書部署 HTTPS

本文示例服務(wù)器環(huán)境:

CentOS 7.2? Apache 2.4? PHP 5.6

如果服務(wù)器環(huán)境不一樣,可能會(huì)有出入。

1. 阿里云申請免費(fèi) CA 證書

如下圖購買免費(fèi) CA 證書,沒什么過多解釋了。

購買成功之后會(huì)在證書控制臺看到補(bǔ)全證書信息的鏈接,點(diǎn)擊去補(bǔ)全即可,如下圖:

如果選擇了“證書綁定的域名在【阿里云的云解析】產(chǎn)品中...”那個(gè)選項(xiàng),是代表要綁定的域名是在當(dāng)前申請證書的這個(gè)阿里云賬戶下,如果不在的話,則需要自己去域名管理處添加一條 TXT 的域名解析記錄,如下圖:

記錄類型,主機(jī)記錄,記錄值都在審核進(jìn)度里顯示,填到域名解析里即可。

域名解析填寫完成之后,點(diǎn)擊上圖最下面右側(cè)的“檢查配置”,如果左側(cè)顯示配置沒問題了,就正式提交審核了。

審核完成后對應(yīng)的證書的狀態(tài)會(huì)變?yōu)椤耙押灠l(fā)”,如下圖:

已簽發(fā)之后,就可以點(diǎn)擊右側(cè)的下載按鈕下載證書,去服務(wù)器配置了。

2. 服務(wù)器配置 CA 證書

Apache 服務(wù)器配置

首先下載證書,如下圖:

下載證書之后,放到 Apache 安裝根目錄(/etc/httpd)下,可以直接在服務(wù)器上使用wget下載,也可以下載到本地,使用 SCP 上傳到阿里云服務(wù)器:

scp Downloads/21427xxxx63xxx1.zip root@xx.1xx.xx6.xxx:/etc/httpd

接下來就和阿里云的指南不一樣了。

下面這兩行你會(huì)發(fā)現(xiàn) httpd.conf 里沒有,因?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)目錄有改過,記得在這個(gè)文件里改一下 443 端口對應(yīng)的網(wǎng)站默認(rèn)目錄和域名。

然后重啟 Apache:

systemctl restart httpd

至此大功告成。

Apache 下 HTTP 默認(rèn)轉(zhuǎn)發(fā)到 HTTPS

如果想要 80 端口的 http 訪問也轉(zhuǎn)發(fā)到 https,打開Apache/conf/httpd.conf,找到 #LoadModule rewrite_module modules/mod_rewrite.so 去掉#號,打開重定向支持,然后找到你網(wǎng)站目錄的<Directory>段,修改其中的 AllowOverride None 為 AllowOverride All,然后重啟 Apache 。

在你網(wǎng)站目錄下放一個(gè).htaccess文件。

編輯器打開.htaccess文件,寫入如下規(guī)則:

RewriteEngine on

RewriteCond %{SERVER_PORT} !^443$

RewriteCond %{REQUEST_URI} !^/tz.php

RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]

解釋:

%{SERVER_PORT} —— 訪問端口

%{REQUEST_URI} —— 比如如果url是 http://localhost/tz.php,則是指 /tz.php

%{SERVER_NAME} —— 比如如果url是 http://localhost/tz.php,則是指 localhost

以上規(guī)則的意思是,如果訪問的url的端口不是443,且訪問頁面不是tz.php,則應(yīng)用RewriteRule這條規(guī)則。這樣便實(shí)現(xiàn)了:訪問了http://localhost/index.php或者http://localhost/admin/index.php等頁面的時(shí)候會(huì)自動(dòng)跳轉(zhuǎn)到https://localhost/index.php或者https://localhost/admin/index.php,但是訪問http://localhost/tz.php的時(shí)候就不會(huì)做任何跳轉(zhuǎn),也就是說http://localhost/tz.phphttps://localhost/tz.php兩個(gè)地址都可以訪問。

Nginx 服務(wù)器配置

如果沒有使用虛擬機(jī),則按照阿里云上的教程配置即可。即

如果使用了虛擬機(jī),則在對應(yīng)虛擬機(jī)配置文件上添加以下紅色語句即可。

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)制訪問https模式,將以下的跳轉(zhuǎn)代碼添加到當(dāng)前網(wǎng)站所有使用的偽靜態(tài)規(guī)則conf文件中,即可實(shí)現(xiàn)所有的http訪問都跳轉(zhuǎn)到https訪問,并且是繼承目錄的,具體實(shí)現(xiàn)方法就是把http模式訪問301重定向到https模式。

if ($server_port = 80) {

return 301 https://$server_name$request_uri;

}

if ($scheme = http) {

return 301 https://$server_name$request_uri;

}

完。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容