一.實現(xiàn)https加密
我們知道現(xiàn)在到了 https 的時代了,每個優(yōu)秀的網(wǎng)站幾乎都已經(jīng)開啟 https。開啟了 https 加密訪問之后,登錄你的網(wǎng)站,瀏覽器地址欄就會出現(xiàn)一把綠色的鎖,這就是使用了超文本傳輸安全協(xié)議(HTTPS),是以安全為目標的HTTP通道,簡單來說就是HTTP安全版。
https由兩個部分組成:HTTP+SSL/TLS,在http基礎(chǔ)上加上了一層加密信息模塊,服務(wù)端和客戶端的信息插損胡都會通過TLS進行加密,傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)
為了解決HTTP協(xié)議的這些缺陷,需要使用另一種協(xié)議:HTTPS。為了數(shù)據(jù)傳輸?shù)陌踩?,HTTPS在http的基礎(chǔ)上加了SSL協(xié)議,SSL依靠證書驗證身份,并為瀏覽器和服務(wù)器之間通信加密;
SSL證書是一種數(shù)字證書,使用Secure Socket Layer協(xié)議在瀏覽器和web服務(wù)器之間建立一條安全通道,從而實現(xiàn)數(shù)據(jù)信息在客戶端和服務(wù)器之間的加密傳輸,保證雙方傳遞信息的安全性,不可被第三方竊聽,而且用戶可以通過服務(wù)器證書驗證所訪問網(wǎng)站是否真實可靠;
加密的HTTPS和HTTP的區(qū)別:
超文本傳輸協(xié)議HTTP協(xié)議被用于在web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息,HTTP協(xié)議以明文方式發(fā)送內(nèi)容,不提供任何方式的加密數(shù)據(jù),如果攻擊者截取了web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報文,就可以直接讀取其中信息,因此,http協(xié)議不適合傳輸一些敏感信息;
實驗如下所示:
第一步:1.關(guān)閉nginx服務(wù),并重新編譯(主要是為了添加ssl模塊)
[root@nodel1 conf]# systemctl stop nginx
[root@nodel1 conf]# cd /mnt
[root@nodel1 mnt]# ls
[root@nodel1 mnt]# cd nginx-1.17.1/
[root@nodel1 nginx-1.17.1]# make clean
[root@nodel1 nginx-1.17.1]# yum install openssl-devel -y #編譯過程使用加密的時候,需要安裝這個
1
2
3
4
5
6
[root@nodel1 nginx-1.17.1]# ./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_image_filter_module=dynamic --with-http_ssl_module
[root@nodel1 nginx-1.17.1]# make
1
2
替代之前的二進制文件并再次將圖像模塊放入modules目錄下
[root@nodel1 nginx-1.17.1]# cd objs/
[root@nodel1 objs]# cp nginx -f /usr/local/nginx/sbin/nginx
[root@nodel1 objs]# ls
[root@nodel1 objs]# cp ngx_http_image_filter_module.so /usr/local/nginx/modules
1
2
3
4
第二步:在/etc/pki/tls/certs/下生成證書并將證書都放到nginx的配置文件的目錄下
[root@nodel1 objs]# cd /etc/pki/tls/certs/
[root@nodel1 certs]# make cert.pem #生成證書
Country Name (2 letter code) [XX]:cn # 國家代號,中國輸入CN
State or Province Name (full name) []:shannxi #省
Locality Name (eg, city) [Default City]:xi'an #市
Organization Name (eg, company) [Default Company Ltd]:westos #公司英文名
Organizational Unit Name (eg, section) []:linux #組織名稱
Common Name (eg, your name or your server's hostname) []:nodel1 #主機名或者你的名字
Email Address []:root@westos.org #郵箱地址
[root@nodel1 certs]# cp cert.pem /usr/local/nginx/conf/ # 將證書都放到nginx的配置文件的目錄下
1
2
3
4
5
6
7
8
9
10
11
12
13
第三步:編寫配置文件并開啟nginx服務(wù)(注意:此時并沒有設(shè)置https加密,只是普通的http)
[root@nodel1 objs]# cd /usr/local/nginx/conf/
[root@nodel1 conf]# vim nginx.conf
131 server {
132 listen 80;
133 server_name www.westos.org;
134 location / {
135 root /web;
136 index index.html;
137 }
138 }
139 }
[root@nodel1 conf]# systemctl start nginx
[root@nodel1 conf]# systemctl status nginx.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
第四步:在nodel1配置解析并編輯默認發(fā)布文件
vim /etc/hosts
172.25.15.1 nodel1 www.westos.org
1
2
[root@nodel1 conf]# cd
[root@nodel1 ~]# mkdir /web
[root@nodel1 ~]# cd /web
[root@nodel1 web]# vim index.html
[root@nodel1 web]# cat index.html
里面寫入的內(nèi)容如下所示:
www.westos.org
1
2
3
4
5
6
7
第五步:測試并重新編輯nginx的配置文件(此刻是https)
測試:此時如果在瀏覽器測試是不會出現(xiàn)綠色的鎖的,因為沒有設(shè)置https加密
再次編寫nginx配置文件,然后檢測其是否有語法錯誤并重啟服務(wù),使其可以實現(xiàn)http->https
[root@nodel1 web]# cd /usr/local/nginx/conf/
[root@nodel1 conf]# vim nginx.conf
111 # HTTPS server
112
113 server {
114 listen 443 ssl; #ssl端口
115 server_name www.westos.org;
116
117 ssl_certificate cert.pem;
118 ssl_certificate_key cert.pem;
119
120 ssl_session_cache shared:SSL:1m;
121 ssl_session_timeout 5m;
122
123 ssl_ciphers HIGH:!aNULL:!MD5;
124 ssl_prefer_server_ciphers on;
125
126 location / {
127 root /web;
128 index index.html index.htm;
129 }
130 }
131
132 server {
133 listen 80;
134 server_name www.westos.org;
135 rewrite ^/(.*)$ https://www.westos.org/;
136
137 location / {
138 root /web;
139 index index.html;
140 }
141 }
142 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@nodel1 conf]# cd -
/usr/local/nginx/sbin
[root@nodel1 sbin]# ./nginx -t #檢測語法是否有錯
[root@nodel1 sbin]# systemctl reload nginx
1
2
3
4
第六步:在真機中添加域名解析并在瀏覽器訪問
[root@foundation15 ~]# vim /etc/hosts
172.25.15.1 nodel1 www.westos.org
1
2
在瀏覽中輸入www.westos.org后會自動補齊https:并顯示添加證書
查看一下證書信息
二.重定向
第一種:重定向到具體文件
前提:
(一)將www.westos.org重定向到https://www.westos.org(上述實驗已經(jīng)完成,這里進行擴充)
我們想要重定向到具體的文件,問題如下:
在物理機中訪問www.westos.org,顯示的HTTP狀態(tài)碼是302(302表示暫時重定向,301表示永久重定向),且可以成功重定向到https://www.westos.org。
但是我們在物理機中訪問www.westos.org/vim.jpg,發(fā)現(xiàn)其不可以成功重定向到https://www.westos.org/vim.jpg,只是可以重定向到https://www.westos.org,不能重定向到具體的文件。
實驗步驟如下所示:
[root@nodel1 sbin]# cd -
/usr/local/nginx/conf
[root@nodel1 conf]# vim nginx.conf
132 server {
133 listen 80;
134 server_name www.westos.org;
135 rewrite ^/(.*)$ https://www.westos.org/$1;
[root@nodel1 conf]# systemctl reload nginx
1
2
3
4
5
6
7
8
9
10
11
此時在物理機中訪問www.westos.org/redhat.jpg,可以成功重定向到https://www.westos.org/redhat.jpg
此時我們可以看見,是302暫時重定向,我們想要將暫時重定向設(shè)置為永久重定向,就需要進行以下操作
[root@nodel1 conf]# vim nginx.conf
132 server {
133 listen 80;
134 server_name www.westos.org;
135 rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
[root@nodel1 conf]# systemctl reload nginx
1
2
3
4
5
6
7
8
此時在去物理機中訪問:
第二種:不同網(wǎng)站之間的重定向
將www.westos.org/bbs/index.html重定向到/bbs.westos.org/index.html
第一步:編輯nginx配置文件,配置bbs.westos.org的測試頁
[root@nodel1 conf]# vim nginx.conf
143 server {
144 listen 80;
145 server_name bbs.westos.org;
146
147 location / {
148 root /bbs;
149 index index.html;
150 }
151 }
152 }
[root@nodel1 conf]# systemctl reload nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
檢測是否有錯誤:
[root@nodel1 conf]# cd
[root@nodel1 ~]# mkdir /bbs
[root@nodel1 ~]# cd /bbs
[root@nodel1 bbs]# vim index.html
[root@nodel1 bbs]# cat index.html
bbs.westos.org #bbs的測試頁
1
2
3
4
5
6
在真機里面添加解析:
[root@foundation15 ~]# vim /etc/hosts
172.25.15.1 nodel1 www.westos.org bbs.westos.org
1
2
測試:
第二步:修改nginx配置文件并重啟nginx服務(wù)
[root@nodel1 conf]# vim nginx.conf
[root@nodel1 bbs]# cd /usr/local/nginx/conf/
[root@nodel1 conf]# vim nginx.conf
135 #rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
136 rewrite ^/bbs/(.*)$ https://bbs.westos.org/$1 permanent;
[root@nodel1 conf]# systemctl reload nginx
1
2
3
4
5
6
7
8
9
測試:
以上的方法雖然實現(xiàn)了不同網(wǎng)頁的重定向,但是在測試方面我們發(fā)現(xiàn),還得加個bbs,這樣也太不方便了,為了解決這個問題,我們進行以下操作。
第三步:完善
將bbs這個目錄復(fù)制/web目錄下
[root@nodel1 conf]# cp -r /bbs /web/
[root@nodel1 conf]# cd /web/
[root@nodel1 web]# ls
bbs index.html
1
2
3
4
[root@nodel1 conf]# vim nginx.conf
132 server {
133 listen 80;
134 server_name www.westos.org bbs.westos.org;
135 #rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
136 #rewrite ^/bbs/(.*)$ https://bbs.westos.org/$1 permanent;
137 if ($host = "bbs.westos.org"){
138 rewrite ^/(.*)$ https://www.westos.org/bbs/$1 permanent;
139 }
140
141 location / {
142 root /web;
143 index index.html;
144 }
145 }
146 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@nodel1 nginx]# ./sbin/nginx -t
[root@nodel1 conf]# systemctl reload nginx
1
2
第四步:測試
上一篇:重定向HTTPS配置和使用方法