溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

nginx配置支持https的示例代碼

發(fā)布時(shí)間:2020-10-01 18:18:04 來(lái)源:腳本之家 閱讀:174 作者:陳乃欒 欄目:服務(wù)器

1、簡(jiǎn)介

你還在讓你的網(wǎng)站裸奔在網(wǎng)絡(luò)上嗎?在這里我們將搭建 免費(fèi)版 HTTPS,免費(fèi)的,免費(fèi)的,免費(fèi)的,重要的事情說(shuō)三遍。

超文本傳輸協(xié)議HTTP協(xié)議被用于在Web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息,HTTP協(xié)議以明文方式發(fā)送內(nèi)容,不提供任何方式的數(shù)據(jù)加密,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報(bào)文,就可以直接讀懂其中的信息,

因此,HTTP協(xié)議不適合傳輸一些敏感信息,比如:信用卡號(hào)、密碼等支付信息,

為了解決HTTP協(xié)議的這一缺陷,需要使用另一種協(xié)議:安全套接字層超文本傳輸協(xié)議HTTPS,為了數(shù)據(jù)傳輸?shù)陌踩?,HTTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議,SSL依靠證書(shū)來(lái)驗(yàn)證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信加密。

2、 HTTPS的優(yōu)點(diǎn)

盡管HTTPS并非絕對(duì)安全,掌握根證書(shū)的機(jī)構(gòu)、掌握加密算法的組織同樣可以進(jìn)行中間人形式的攻擊,但HTTPS仍是現(xiàn)行架構(gòu)下最安全的解決方案,主要有以下幾個(gè)好處:

(1)使用HTTPS協(xié)議可認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;

(2)HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比http協(xié)議安全,可防止數(shù)據(jù)在傳輸過(guò)程中不被竊取、改變,確保數(shù)據(jù)的完整性。

(3)HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對(duì)安全,但它大幅增加了中間人攻擊的成本。

(4)谷歌曾在2014年8月份調(diào)整搜索引擎算法,并稱“比起同等HTTP網(wǎng)站,采用HTTPS加密的網(wǎng)站在搜索結(jié)果中的排名將會(huì)更高”。

3、 HTTPS的缺點(diǎn)

雖然說(shuō)HTTPS有很大的優(yōu)勢(shì),但其相對(duì)來(lái)說(shuō),還是存在不足之處的:

(1)HTTPS協(xié)議握手階段比較費(fèi)時(shí),會(huì)使頁(yè)面的加載時(shí)間延長(zhǎng)近50%,增加10%到20%的耗電;

(2)HTTPS連接緩存不如HTTP高效,會(huì)增加數(shù)據(jù)開(kāi)銷和功耗,甚至已有的安全措施也會(huì)因此而受到影響;

(3)SSL證書(shū)需要錢,功能越強(qiáng)大的證書(shū)費(fèi)用越高,個(gè)人網(wǎng)站、小網(wǎng)站沒(méi)有必要一般不會(huì)用。

(4)SSL證書(shū)通常需要綁定IP,不能在同一IP上綁定多個(gè)域名,IPv4資源不可能支撐這個(gè)消耗。

(5)HTTPS協(xié)議的加密范圍也比較有限,在黑客攻擊、拒絕服務(wù)攻擊、服務(wù)器劫持等方面幾乎起不到什么作用。最關(guān)鍵的,SSL證書(shū)的信用鏈體系并不安全,特別是在某些國(guó)家可以控制CA根證書(shū)的情況下,中間人攻擊一樣可行。

4、 下載 certbot

這里使用git下載,還沒(méi)有安裝git的查看如何安裝

nginx配置支持https的示例代碼

切換目錄

cd /usr/local

克隆git倉(cāng)庫(kù)

git clone https: // github.com/certbot/certbot.git

克隆完成將會(huì)在/usr/loca/  出現(xiàn)certbot目錄

5、 查看 certbot

切換到certbot目錄

cd /usr/local/certbot

如果目錄是這樣的說(shuō)明安裝成功了

nginx配置支持https的示例代碼

certbot常用命令 查看官方文檔

6、 安裝nginx

參看安裝nginx文檔

7、 申請(qǐng)https證書(shū)

查看當(dāng)前證書(shū)

./certbot-auto certificates

第一次執(zhí)行將會(huì)安裝一些依賴,中途有一次確認(rèn)詢問(wèn),輸入Y即可

開(kāi)始申請(qǐng)證書(shū)(證書(shū)有效期3個(gè)月,過(guò)期需要重新申請(qǐng)) 方式一:使用DNS方式驗(yàn)證,該方式需要你能配置域名,我個(gè)人喜歡這種方式 ./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d  你的域名 --manual --preferred-challenges dns-01 certonly  如:

配置泛域名

復(fù)制代碼 代碼如下:
./certbot-auto --server https: // acme-v02.api.letsencrypt.org/directory -d *.nl166.com --manual --preferred-challenges dns-01 certonly

配置制定域名

復(fù)制代碼 代碼如下:
./certbot-auto --server https: // acme-v02.api.letsencrypt.org/directory -d api.nl166.com --manual --preferred-challenges dns-01 certonly

配置二級(jí)泛域名

復(fù)制代碼 代碼如下:
./certbot-auto --server https: // acme-v02.api.letsencrypt.org/directory -d *.api.nl166.com --manual --preferred-challenges dns-01 certonly

nginx配置支持https的示例代碼

如上圖所示,第一次會(huì)讓你輸入一個(gè)郵箱,按要求輸入就可以了,到時(shí)候會(huì)發(fā)送一個(gè)郵件給你,需要點(diǎn)擊確認(rèn)郵箱,所以務(wù)必填寫真實(shí)郵箱,然后按要求確認(rèn)就可,不確認(rèn)是執(zhí)行不下去的。

nginx配置支持https的示例代碼

接下來(lái)會(huì)讓你驗(yàn)證域名,按要求解析個(gè)TXT類型的記錄

nginx配置支持https的示例代碼

保存確認(rèn)以后再回到服務(wù)器中確認(rèn)

nginx配置支持https的示例代碼

上面這兩個(gè)文件就是配置https用到的證書(shū)了

方式二:使用插件方式

我們先看看官方怎么說(shuō)的

nginx配置支持https的示例代碼

這里我使用的是nginx(申請(qǐng)完會(huì)自動(dòng)幫你重啟nginx) 這種方式配置不了泛域名,只能一個(gè)一個(gè)添加

./certbot-auto --nginx -d api2.nl166.com

nginx配置支持https的示例代碼

nginx配置支持https的示例代碼

解決上述報(bào)錯(cuò),請(qǐng)注意,/usr/local/nginx 請(qǐng)?zhí)鎿Q為你的nginx實(shí)際安裝位置安裝LNMP

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

ln -s /usr/local/nginx/conf/ /etc/nginx

再次執(zhí)行申請(qǐng)

nginx配置支持https的示例代碼

中途會(huì)詢問(wèn)你請(qǐng)選擇是否將HTTP流量重定向到HTTPS,刪除HTTP訪問(wèn)??筛鶕?jù)自己的需求選擇,我這里是c取消選擇(實(shí)際上這一步可以直接不理,經(jīng)測(cè)試,這一步?jīng)]有選擇前,訪問(wèn)網(wǎng)址https已經(jīng)可以訪問(wèn)了。)

如果想省略詢問(wèn)這一步,可以添加certonly 該種方式只會(huì)生成證書(shū),不做其余操作,證書(shū)配置需要自己手動(dòng)添加 如下:

./certbot-auto certonly --nginx -d api2.nl166.com

nginx配置支持https的示例代碼

如上圖所示,如果你配置了監(jiān)聽(tīng)443端口的server,他會(huì)幫你自動(dòng)找到對(duì)應(yīng)域名的配置文件,并添加下面兩行,還把我格式打亂了,}號(hào)與上面{的縮進(jìn)不對(duì)應(yīng)了,不過(guò)不影響功能,這里不知道會(huì)不會(huì)根據(jù)nginx的版本選擇是否添加ssl on;

因?yàn)槲疫@個(gè)nginx版本是不需要這個(gè)的,較低版本需要添加ssl on;才能開(kāi)啟https訪問(wèn)。

如沒(méi)有監(jiān)聽(tīng)該域名的443端口,則會(huì)在如下位置添加信息

nginx配置支持https的示例代碼

其他方式請(qǐng)自行摸索

8、配置nginx支持https

# HTTPS server
 #
 server {
 listen 443 ssl;
 server_name api2.nl166.com;
 root /data/web/im.nl166.com;

 location / {
 index index.php;
 }

 #auth_basic "hello world";
 #auth_basic_user_file /usr/local/nginx/conf/auth/nl166.auth;

 location ~ \.php$ {
 include fastcgi_params;
 fastcgi_pass unix:/tmp/php-fcgi.sock;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 }
 location ~ .*.(svn|git|cvs) {
 deny all;
 }

 ssl_certificate /etc/letsencrypt/live/api2.nl166.com/fullchain.pem; # managed by Certbot
 ssl_certificate_key /etc/letsencrypt/live/api2.nl166.com/privkey.pem; # managed by Certbot
 }

較低版本需要增加ssl on;才能開(kāi)啟https訪問(wèn)。

9、使用shell腳本與定時(shí)任務(wù)定時(shí)續(xù)期證書(shū)

注意:為避免遇到操作次數(shù)的限制,加入 --dry-run 參數(shù),可以避免操作限制,等執(zhí)行無(wú)誤后,再去掉進(jìn)行真實(shí)的renew 操作。 方式一的續(xù)期

其中域名為/etc/letsencrypt/renewal/目錄下的****.conf ,****就是你要填寫的域名,比如我生成的時(shí)候是*.nl166.com,但是在實(shí)際生成的時(shí)候是沒(méi)有*號(hào)的

/home/certbot-sh/au.sh 替換成你自己更新DNS的腳本

如下:

復(fù)制代碼 代碼如下:
./certbot-auto renew --cert-name nl166.com --manual-auth-hook /data/shell/crontab/auto_update_httpscert. sh --dry-run

nginx配置支持https的示例代碼

把更新命令放到一個(gè)文件,我這里是放在了/data/shell/crontab/auto_update_httpscert.sh 內(nèi)容如下 ,原來(lái)的auto_update_httpscert.sh 更改到/data/shell/cnl_update_httpscert.sh

nginx配置支持https的示例代碼

增加系統(tǒng)定時(shí)任務(wù)

crontab -e

#每個(gè)星期天凌晨5點(diǎn)執(zhí)行更新https證書(shū)操作

0 5 * * 0 sh /data/shell/crontab/auto_update_httpscert.sh

方式二的續(xù)期 如下:

./certbot-auto certonly --renew-by-default --nginx -d api2.nl166.com --dry-run 

nginx配置支持https的示例代碼

增加系統(tǒng)定時(shí)任務(wù)操作參考方式一

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI