nginx如何將http訪問(wèn)的網(wǎng)站改成https訪問(wèn)
1. 背景
我有個(gè)用于數(shù)據(jù)展示的網(wǎng)站使用nginx對(duì)外提供http訪問(wèn),另外一個(gè)系統(tǒng)用超鏈接的方式跳轉(zhuǎn)到我的網(wǎng)站提供給終端用戶訪問(wèn)。后來(lái)對(duì)方說(shuō)他們的站點(diǎn)是https訪問(wèn)的,不能直接訪問(wèn)http,所以需要我支持https訪問(wèn)。
所以這里僅限于展示類網(wǎng)站的參考,交互式網(wǎng)站我也不會(huì)。
***對(duì)nginx的了解僅限于可以通過(guò)配置文件完成網(wǎng)站訪問(wèn)的配置,其他沒(méi)有深入理解。***
2. 預(yù)備知識(shí)
https:
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本傳輸安全協(xié)議),是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。
簡(jiǎn)單來(lái)講就是網(wǎng)站中嵌入證書,用戶通過(guò)瀏覽器和網(wǎng)站服務(wù)器交互時(shí)數(shù)據(jù)會(huì)被加密,保證安全。
證書體系:
樹(shù)狀結(jié)構(gòu),可能有多層證書辦法機(jī)構(gòu),最頂層的叫根證書機(jī)構(gòu),持有根證書私鑰,可以簽發(fā)下一級(jí)證書,每個(gè)機(jī)構(gòu)或者人使用的證書由證書頒發(fā)機(jī)構(gòu)頒發(fā),簡(jiǎn)單來(lái)講就是用頒發(fā)機(jī)構(gòu)的私鑰,對(duì)證書人的個(gè)人信息、公鑰等諸多信息做數(shù)字簽名,對(duì)外宣稱這個(gè)證書由他證明。證書可以公開(kāi)訪問(wèn)以驗(yàn)證持有者身份,由頒發(fā)機(jī)構(gòu)背書,證書對(duì)應(yīng)私鑰由持有人持有,不對(duì)外公開(kāi),用于解密他人通過(guò)證書中公鑰加密的私密消息。
有點(diǎn)類似于公安機(jī)構(gòu)對(duì)于身份證的頒發(fā),全國(guó)總上層有一個(gè)公安部,負(fù)責(zé)所有省級(jí)公安廳的管理,省級(jí)負(fù)責(zé)市級(jí),...,最終由派出所給個(gè)人頒發(fā)身份證,我們拿著身份證就可以對(duì)外證明自己的身份,因?yàn)橛信沙鏊谋硶?,而派出所又有上?jí)、上上級(jí)一直到公安部的背書。不同的是我們的身份證里并沒(méi)有證書包含的那么多消息。
備注:證書依賴于公鑰加密體制,公鑰密碼體系包含公鑰、私鑰兩把密鑰,公鑰用戶加密、驗(yàn)簽,私鑰用于解密、簽名。
3. 操作過(guò)程
3.1 證書生成
主要過(guò)程是:根證書 -->服務(wù)器證書,這里的服務(wù)器證書指的是我上面所提到需要添加https訪問(wèn)的網(wǎng)站服務(wù)器,
1. 生成根證書私鑰、生成根證書請(qǐng)求、創(chuàng)建自簽發(fā)根證書
#生成根證書私鑰 openssl genrsa -out root.key 2048 #生成根證書請(qǐng)求 openssl req -new -key root.key -out root.csr #用根證書私鑰自簽生成根證書 openssl x509 -req -in root.csr -extensions v3_ca -signkey root.key -out root.crt
這里根證書私鑰自簽證書的原因是,證書的格式都是一致的,需要有證書頒發(fā)簽發(fā),因?yàn)楦C書頒發(fā)機(jī)構(gòu)沒(méi)有上級(jí),所以根證書頒發(fā)機(jī)構(gòu)給自己簽發(fā)證書,因此有需要大家都信任他。
2. 生成服務(wù)器證書私鑰、生成服務(wù)器證書請(qǐng)求、使用根證書私鑰簽發(fā)服務(wù)器證書,這里注意此服務(wù)器證書的commonName需要設(shè)置成nginx配置文件中的server_name,保持一致。
#生成服務(wù)器證書私鑰 openssl genrsa -out server.key 2048 #生成服務(wù)器證書請(qǐng)求 openssl req -new -key server.key -out server.csr #生成服務(wù)器證書 openssl x509 -days 365 -req -in server.csr -extensions v3_req -CAkey root.key -CA root.crt -CAcreateserial -out server.crt -extfile openssl.cnf
這里有個(gè)openssl.cnf文件需要注意,里面描述了需要頒發(fā)的服務(wù)器證書的一些信息,內(nèi)容如下
[req] distinguished_name = req_distinguished_name req_extensions = v3_req [req_distinguished_name] countryName = CN countryName_default = CN stateOrProvinceName = Guizhou stateOrProvinceName_default = Guizhou localityName = Guizhou localityName_default = Guizhou organizationalUnitName = (如果網(wǎng)頁(yè)訪問(wèn)是ip就寫ip,如果是域名就寫域名) organizationalUnitName_default = (如果網(wǎng)頁(yè)訪問(wèn)是ip就寫ip,如果是域名就寫域名) commonName = (如果網(wǎng)頁(yè)訪問(wèn)是ip就寫ip,如果是域名就寫域名) commonName_max = 64 [ v3_req ] # Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
3.2 nginx配置
打開(kāi)nginx配置中HTTPS server部分的注釋,修改server_name、ssl_certificate、ssl_certificate_key、location中的root等字段。
...
# HTTPS server
#
server {
listen 443 ssl;
server_name xxx.com(網(wǎng)址訪問(wèn)地址);
ssl on;
ssl_certificate xxx.crt(服務(wù)器證書);
ssl_certificate_key xxx.key(服務(wù)器證書私鑰);
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root xxx(前端代碼目錄);
index index.html index.htm;
}
}
...
啟動(dòng)nginx,即可對(duì)外提供服務(wù)了。
3.3 瀏覽器訪問(wèn)
到現(xiàn)在我們已經(jīng)在服務(wù)器端配置了https訪問(wèn),但是瀏覽器訪問(wèn)的時(shí)候會(huì)提示證書錯(cuò)誤,因?yàn)闉g覽器現(xiàn)在還不認(rèn)識(shí)我們的證書,不確定它是不是安全的。就像我們都拿著公安部頒發(fā)的身份證去證明身份沒(méi)問(wèn)題,但是你拿著自己頒發(fā)的一個(gè)身份證去證明別人就不一定會(huì)信了,因?yàn)闆](méi)人知道你的頒發(fā)機(jī)構(gòu)是什么情況。
所以我們要把服務(wù)器證書的頒發(fā)機(jī)構(gòu),即我們上面生成的根證書添加到瀏覽器的信任列表中,具體操作方法:如果是windows系統(tǒng),可以直接雙擊根證書文件,點(diǎn)擊安裝,安裝到受信任的根證書頒發(fā)機(jī)構(gòu),這時(shí)候就可以順利訪問(wèn)了。
以上就是nginx如何將http訪問(wèn)的網(wǎng)站改成https訪問(wèn)的詳細(xì)內(nèi)容,更多關(guān)于nginx http訪問(wèn)改成https訪問(wèn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- nginx配置ssl實(shí)現(xiàn)https的方法示例
- Nginx實(shí)現(xiàn)https網(wǎng)站配置代碼實(shí)例
- nginx配置https加密訪問(wèn)的詳細(xì)教程
- Nginx域名轉(zhuǎn)發(fā)https訪問(wèn)的實(shí)現(xiàn)
- 阿里云Nginx配置https實(shí)現(xiàn)域名訪問(wèn)項(xiàng)目(圖文教程)
- Nginx配置https原理及實(shí)現(xiàn)過(guò)程詳解
- Nginx配置同一個(gè)域名同時(shí)支持http與https兩種方式訪問(wèn)實(shí)現(xiàn)
- Nginx同時(shí)支持Http和Https的配置詳解
- Nginx反向代理多域名的HTTP和HTTPS服務(wù)的實(shí)現(xiàn)
- 使用Nginx實(shí)現(xiàn)301跳轉(zhuǎn)至https的根域名示例代碼
相關(guān)文章
Nginx配置指令location匹配符優(yōu)先級(jí)和安全問(wèn)題
使用nginx 很久了,它的性能高,穩(wěn)定性表現(xiàn)也很好,得到了很多人的認(rèn)可。特別是它的配置,有點(diǎn)像寫程序一樣,每行命令結(jié)尾一個(gè)";"號(hào),語(yǔ)句塊用"{}"括起來(lái)。 配制好,直接nginx -t 檢查配制情況,配制成功,直接運(yùn)行:service nginx reload .服務(wù)器沒(méi)有任何宕機(jī)情況下,實(shí)現(xiàn)平穩(wěn)修改配置2014-03-03
在Nginx中配置image filter模塊來(lái)實(shí)現(xiàn)動(dòng)態(tài)生成縮略圖
這篇文章主要介紹了在Nginx中配置image filter模塊來(lái)實(shí)現(xiàn)動(dòng)態(tài)生成縮略圖的方法,包括縮略圖尺寸的設(shè)置等方面的介紹,需要的朋友可以參考下2015-12-12
Nginx中accept鎖的機(jī)制與實(shí)現(xiàn)詳解
這篇文章主要給大家介紹了關(guān)于Nginx中accept鎖的機(jī)制與實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
解決nginx訪問(wèn)頁(yè)面中文亂碼的問(wèn)題
這篇文章主要為大家介紹了nginx訪問(wèn)頁(yè)面中文亂碼解決方案,文中有相關(guān)的代碼示例供大家參考,有需要的朋友可以借鑒參考下,希望能夠有所幫助2023-09-09
Linux部署Nginx實(shí)現(xiàn)反向代理的方法步驟
Nginx 是一種常用、輕型且快速的 Web 服務(wù)器, 它可以在 Linux 和 Windows 上運(yùn)行,并且可以配置為反向代理服務(wù)器,本文主要介紹了Linux部署Nginx實(shí)現(xiàn)反向代理的方法步驟,感興趣的可以了解一下2023-08-08
nginx 平滑重啟與升級(jí)的實(shí)現(xiàn)方法
有時(shí)候我們需要平滑重啟nginx服務(wù),防止出現(xiàn)問(wèn)題,這里簡(jiǎn)單的總結(jié),方便需要的朋友2013-02-02
寶塔使用Nginx?Proxy?Manager申請(qǐng)SSL的實(shí)現(xiàn)
本文主要介紹了寶塔使用Nginx?Proxy?Manager申請(qǐng)SSL,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
一些優(yōu)化Nginx服務(wù)器的技巧簡(jiǎn)介
這篇文章主要介紹了一些優(yōu)化Nginx服務(wù)器的技巧簡(jiǎn)介,包括對(duì)HTTP模塊和Events模塊的配置建議,需要的朋友可以參考下2015-06-06

