摘要:通過(guò)購(gòu)買(mǎi)免費(fèi)的證書(shū)購(gòu)買(mǎi)地址詳細(xì)操作請(qǐng)點(diǎn)擊免費(fèi)申請(qǐng)阿里云賽門(mén)企業(yè)級(jí)鐵克證書(shū)在上面配置我們現(xiàn)在這里只講解在阿里云下購(gòu)買(mǎi)的證書(shū)進(jìn)行配置,現(xiàn)在都有了證書(shū),現(xiàn)在我們來(lái)配置。
最近項(xiàng)目中的網(wǎng)站要設(shè)置https,雖然進(jìn)入軟件行業(yè)6年了,配置這個(gè)還是顯得信心不足,還好網(wǎng)上有好多網(wǎng)友分享的文章可以從中學(xué)習(xí),但是有優(yōu)也有劣,憑我自己的一點(diǎn)經(jīng)驗(yàn)從中甄選出好一點(diǎn)的文章跟大家分享一下。
1、什么是Https?
HTTPS(全稱(chēng):Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。 它是一個(gè)URI scheme(抽象標(biāo)識(shí)符體系),句法類(lèi)同http:體系。用于安全的HTTP數(shù)據(jù)傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在HTTP與TCP之間)。這個(gè)系統(tǒng)的最初研發(fā)由網(wǎng)景公司(Netscape)進(jìn)行,并內(nèi)置于其瀏覽器Netscape Navigator中,提供了身份驗(yàn)證與加密通訊方法。現(xiàn)在它被廣泛用于萬(wàn)維網(wǎng)上安全敏感的通訊,例如交易支付方面。
2、如何在Nginx下設(shè)置網(wǎng)站的Https?
首先,你得先安裝nginx,網(wǎng)上好多資料可以找到安裝的方法,我們預(yù)設(shè)服務(wù)器環(huán)境是CentOS,安裝方法請(qǐng)點(diǎn)擊,這里就不敖述了。
安裝好之后,我們需要數(shù)字證書(shū),可以手動(dòng)通過(guò)openssl生成,也可以購(gòu)買(mǎi),我這里講解的是從阿里云服務(wù)器免費(fèi)購(gòu)買(mǎi)的證書(shū),下面詳細(xì)介紹下openssl。
2.1、openssl 簡(jiǎn)介
openssl 是目前最流行的 SSL 密碼庫(kù)工具,其提供了一個(gè)通用、健壯、功能完備的工具套件,用以支持SSL/TLS 協(xié)議的實(shí)現(xiàn)。
官網(wǎng):https://www.openssl.org/source/
2.1.1、openssl 構(gòu)成部分
密碼算法庫(kù) 密鑰和證書(shū)封裝管理功能 SSL通信API接口
2.1.2、openssl 用途
建立 RSA、DH、DSA key 參數(shù) 建立 X.509 證書(shū)、證書(shū)簽名請(qǐng)求(CSR)和CRLs(證書(shū)回收列表) 計(jì)算消息摘要 使用各種 Cipher加密/解密 SSL/TLS 客戶端以及服務(wù)器的測(cè)試 處理S/MIME 或者加密郵件
2.2、openssl生成自簽名證書(shū)
生成 RSA 私鑰和自簽名證書(shū)
openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt
req是證書(shū)請(qǐng)求的子命令,-newkey rsa:2048 -keyout private_key.pem 表示生成私鑰(PKCS8格式),-nodes 表示私鑰不加密,若不帶參數(shù)將提示輸入密碼;
-x509表示輸出證書(shū),-days365 為有效期,此后根據(jù)提示輸入證書(shū)擁有者信息;
若執(zhí)行自動(dòng)輸入,可使用-subj選項(xiàng):
openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt -subj "/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=vivo.com/emailAddress=yy@vivo.com"
使用 已有RSA 私鑰生成自簽名證書(shū)
openssl req -new -x509 -days 365 -key rsa_private.key -out cert.crt
-new 指生成證書(shū)請(qǐng)求,加上-x509 表示直接輸出證書(shū),-key 指定私鑰文件,其余選項(xiàng)與上述命令相同。
2.3、通過(guò)aliyun購(gòu)買(mǎi)免費(fèi)的證書(shū)
購(gòu)買(mǎi)地址
詳細(xì)操作請(qǐng)點(diǎn)擊免費(fèi)申請(qǐng)阿里云 - 賽門(mén)企業(yè)級(jí)鐵克 SSL 證書(shū)!
2.4、在Nginx上面配置Https
我們現(xiàn)在這里只講解在阿里云下購(gòu)買(mǎi)的證書(shū)進(jìn)行配置,現(xiàn)在都有了證書(shū),現(xiàn)在我們來(lái)配置https。我們假設(shè)你的證書(shū)是放在/usr/local/nginx/cert這個(gè)文件夾下,如下圖所示就是我的證書(shū)文件,注意,我里面還嵌套了一層文件夾:qitenai.com,你們根據(jù)需要添加:
然后我們進(jìn)入文件夾:cd /usr/local/nginx/conf/下運(yùn)行命令:
vim nginx.conf
查看server配置:
server { listen 80; server_name qitenai.com; return 301 https://www.qitenai.com$request_uri; location / { root /data/wwwroot/dist;//注意:這個(gè)項(xiàng)目我是基于vuejs的SPA項(xiàng)目 #index index.html index.htm; try_files $uri $uri/ /index.html; } } ... include /usr/local/nginx/conf/custom/*.conf;//注意這里
我們現(xiàn)在80端口配置沒(méi)問(wèn)題,現(xiàn)在運(yùn)行命令:
cd /usr/local/nginx/conf/custom/ vim qitenai.conf
得到如下結(jié)果:
server { listen 443; server_name qitenai.com; ssl_certificate /usr/local/nginx/cert/qitenai.com/214474132640003.pem;//證書(shū)位置 ssl_certificate_key /usr/local/nginx/cert/qitenai.com/myserver.key;//證書(shū)私鑰位置 location / { root /data/wwwroot/dist;//注意:這個(gè)項(xiàng)目我是基于vuejs的SPA項(xiàng)目 #index index.html index.htm; try_files $uri $uri/ /index.html; } }
這樣我們就配置好了nginx的https,我們?yōu)g覽試試:
3、如何結(jié)合Nginx配置Springboot的Https?
首先,我們?cè)趕pringboot下的application.properties文件里配置:
server.tomcat.remote_ip_header=x-forwarded-for server.tomcat.protocol_header=x-forwarded-proto server.tomcat.port-header=X-Forwarded-Port server.use-forward-headers=true #設(shè)置服務(wù)器端口 server.port=9090
然后,我們?cè)賮?lái)配置nginx,在配置nginx我想說(shuō)的是我的springboot項(xiàng)目是通過(guò)nohup運(yùn)行的,而且這里我寫(xiě)了一個(gè)自動(dòng)化腳本啟動(dòng)springboot項(xiàng)目,如下 :
#!/bin/bash port=9090 #根據(jù)端口號(hào)查詢對(duì)應(yīng)的pid pid=$(netstat -nlp | grep :$port | awk "{print $7}" | awk -F"/" "{ print $1 }"); echo "pid=$pid" #殺掉對(duì)應(yīng)的進(jìn)程,如果pid不存在,則不執(zhí)行 if [ -n "$pid" ]; then echo "正在執(zhí)行kill命令..." if kill -9 $pid; then echo "正在執(zhí)行nohup命令..." nohup java -jar good-learning-success.jar & echo "執(zhí)行成功" fi else echo "找不到pid,直接運(yùn)行nohup命令" nohup java -jar good-learning-success.jar & echo "執(zhí)行成功" fi #echo "查看端口執(zhí)行情況:" #netstat -auptl | grep 9090
再有一個(gè),這個(gè)springboot項(xiàng)目我準(zhǔn)備運(yùn)行在api.qitenai.com這個(gè)二級(jí)域名下,所以我們必須要到域名服務(wù)器商處解析我們這個(gè)二級(jí)域名,具體實(shí)現(xiàn)網(wǎng)上也有好多文章,所以這里也不詳細(xì)講述,好了,我們來(lái)配置nginx吧,運(yùn)行如下命令:
cd /usr/lcoal/nginx/conf/custom vim api.qitenai.conf
如下所示 :
server { listen 80; server_name api.qitenai.com; return 301 https://api.qitenai.com$request_uri; location / { proxy_pass http://127.0.0.1:9090; #這里的端口記得改成項(xiàng)目對(duì)應(yīng)的哦 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; } } server { listen 443 ssl; server_name api.qitenai.com; ssl_certificate /usr/local/nginx/cert/api.qitenai.com/214474131840003.pem;//證書(shū)位置 ssl_certificate_key /usr/local/nginx/cert/api.qitenai.com/214474131840003.key;//證書(shū)私鑰公交車(chē) location / { proxy_pass http://127.0.0.1:9090; #這里的端口記得改成項(xiàng)目對(duì)應(yīng)的哦 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; } }
配置好了之后,我們重啟一下nginx,其實(shí)就是停止所有80端口,443端口會(huì)隨著80端口的停止而停止,運(yùn)行如下命令:
netstat -auntpl | grep 80
[root@iZm5e8pmxwulw6lsbfzw55Z custom]# netstat -auptln | grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 15479/nginx: master tcp 0 0 0.0.0.0:8880 0.0.0.0:* LISTEN 13947/java tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 13694/java tcp 0 0 127.0.0.1:8006 0.0.0.0:* LISTEN 13694/java tcp 0 0 127.0.0.1:8007 0.0.0.0:* LISTEN 13947/java tcp 0 0 0.0.0.0:8010 0.0.0.0:* LISTEN 13947/java tcp 391 0 47.104.57.2:43874 106.11.68.13:80 CLOSE_WAIT 22944/AliYunDunUpda tcp 391 0 47.104.57.2:51732 106.11.68.13:80 CLOSE_WAIT 22944/AliYunDunUpda tcp 0 0 47.104.57.2:36142 106.11.68.13:80 ESTABLISHED 22995/AliYunDun udp 0 0 10.80.186.137:123 0.0.0.0:* 1165/ntpd [root@iZm5e8pmxwulw6lsbfzw55Z custom]#kill -9 15479
再運(yùn)行命令:kill -9 15479之后,再次運(yùn)行命令:netstat -auptln | grep 80查看還有沒(méi)有80端口有沒(méi)有Kill掉,如果有繼續(xù)kill,如果沒(méi)有,我們就運(yùn)行如下命令重啟nginx:
cd /usr/local/nginx/sbin ./nginx
然后打開(kāi)域名https://api.qitenai.com,查看是否成功:
4、如何配置Qiniu的Https?
我們知道,注冊(cè)了七牛服務(wù)后,會(huì)有個(gè)默認(rèn)的域名給你訪問(wèn)資源文件,所以要配置https我們先換成我們的域名,這里我們?cè)O(shè)置域名為cdn.qitenai.com,之后,我們?cè)谄吲9芾眄?yè)面下進(jìn)行配置,在配置之前我們先要上傳證書(shū),這里我們上傳在阿里云里面購(gòu)買(mǎi)的免費(fèi)證書(shū),注意:阿里云購(gòu)買(mǎi)的證書(shū)是一個(gè)域名對(duì)應(yīng)一個(gè)證書(shū)文件,所以像我這里要購(gòu)買(mǎi)三次,這個(gè)一定要注意?。?!
上傳之后,我們現(xiàn)在來(lái)配置域名:
配置一下即可,記住,要選擇我們剛剛上傳的證書(shū),最后就是配置cname了,進(jìn)入你的域名服務(wù)器進(jìn)入解析即可,詳情請(qǐng)點(diǎn)擊如何配置域名的 CNAME
這樣就完成了七牛https的配置,查看效果如圖:
5、問(wèn)題
5.1、如何讓http跳轉(zhuǎn)到https?如何讓http://example.com跳轉(zhuǎn)到https://www.example.com
解決方法:
server { listen 80; server_name www.qitenai.com qitenai.com; return 301 https://www.qitenai.com$request_uri; location / { root /data/wwwroot/dist; #index index.html index.htm; try_files $uri $uri/ /index.html; } } server { listen 443 default_server ssl; server_name www.qitenai.com; ssl_certificate /usr/local/nginx/cert/qitenai.com/214474132640003.pem; ssl_certificate_key /usr/local/nginx/cert/qitenai.com/myserver.key; location / { root /data/wwwroot/dist; #index index.html index.htm; try_files $uri $uri/ /index.html; } } server { listen 443; server_name qitenai.com; return 301 https://www.qitenai.com$request_uri; ssl_certificate /usr/local/nginx/cert/qitenai.com/214474132640003.pem; ssl_certificate_key /usr/local/nginx/cert/qitenai.com/myserver.key; location / { root /data/wwwroot/dist; #index index.html index.htm; try_files $uri $uri/ /index.html; } }
5.2、同一個(gè)域名不同的端口沒(méi)有設(shè)置https如何訪問(wèn)?
沒(méi)有辦法因?yàn)槟銢](méi)有設(shè)置https,所以只能通過(guò)http訪問(wèn),實(shí)際上這種情況還是很多的,比如有些項(xiàng)目使用的nginx,有些只使用tomcat,而tomcat項(xiàng)目是測(cè)試的,所以沒(méi)有配置https很正常。
如果你有問(wèn)題可以加我的qq群向我提問(wèn):464696550
參考文章:
1、Spring Boot學(xué)習(xí)筆記-Nginx+Jar包部署項(xiàng)目
2、SpringBoot+Nginx+Https下redirect問(wèn)題
3、Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上啟用 SSL 支持
4、Nginx配置多個(gè)HTTPS域名的方法
5、使用 openssl 生成證書(shū)
6、阿里云ecs 服務(wù)器配置 nginx https
7、為nginx配置https并自簽名證書(shū)
8、Nginx搭建HTTPS服務(wù)器--自簽證書(shū)
9、Nginx+Https配置
10、主流數(shù)字證書(shū)都有哪些格式?
11、使用Spring Boot開(kāi)發(fā)Web項(xiàng)目(二)之添加HTTPS支持
12、nginx https下不帶www跳轉(zhuǎn)www設(shè)置
13、Nginx 不帶www的https域名 301跳轉(zhuǎn)到帶www的方法
14、Nginx服務(wù)器中HTTP 301跳轉(zhuǎn)到帶www的域名的方法
15、A redirect to a main site
16、Spring Boot中啟動(dòng)HTTPS
17、Nginx+Https配置
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/39777.html
摘要:如果綁定七牛云空間的域名能使用等這類(lèi)免費(fèi)的網(wǎng)址那么就完美了。然而七牛目前并不支持這類(lèi)短期的免費(fèi)證書(shū)。下面我教大家一種利用實(shí)現(xiàn)以的方式訪問(wèn)七牛資源的方法。七牛云空間應(yīng)該已經(jīng)綁定了自定義的域名,不懂如何綁定的請(qǐng)查看前一篇文章。 上一篇文章 為七牛云存儲(chǔ)空間綁定自定義域名,并使用七牛云提供的免費(fèi)SSL證書(shū),將自定義加名升級(jí)為HTTPS 我們提到利用七牛的免費(fèi)SSL證書(shū),將自定義加名升級(jí)為HT...
摘要:如果綁定七牛云空間的域名能使用等這類(lèi)免費(fèi)的網(wǎng)址那么就完美了。然而七牛目前并不支持這類(lèi)短期的免費(fèi)證書(shū)。下面我教大家一種利用實(shí)現(xiàn)以的方式訪問(wèn)七牛資源的方法。七牛云空間應(yīng)該已經(jīng)綁定了自定義的域名,不懂如何綁定的請(qǐng)查看前一篇文章。 上一篇文章 為七牛云存儲(chǔ)空間綁定自定義域名,并使用七牛云提供的免費(fèi)SSL證書(shū),將自定義加名升級(jí)為HTTPS 我們提到利用七牛的免費(fèi)SSL證書(shū),將自定義加名升級(jí)為HT...
摘要:如何更好的學(xué)習(xí)一門(mén)技術(shù),去把它的官方文檔仔細(xì)看一遍最近這段時(shí)間一有空就會(huì)去刷一會(huì)官方文檔,寫(xiě)點(diǎn)感受總結(jié)一下。官方文檔上的評(píng)論尤其要注意,有不少評(píng)論很有價(jià)值。 如何更好的學(xué)習(xí)一門(mén)技術(shù),去把它的官方文檔仔細(xì)看一遍 最近這段時(shí)間一有空就會(huì)去刷一會(huì) PHP 官方文檔,寫(xiě)點(diǎn)感受總結(jié)一下。 起因 我開(kāi)始學(xué)習(xí)編程應(yīng)該算是在大二學(xué) C語(yǔ)言 課程,到了大三自學(xué) PHP,之后用這門(mén)語(yǔ)言做了七八個(gè)外包項(xiàng)目,...
摘要:對(duì)于的解釋器,直接使用依賴包的名稱(chēng),即可安裝上。對(duì)應(yīng)的包名,如果沒(méi)有報(bào)錯(cuò),說(shuō)明是解釋器自帶的包,反之,不是解釋器自帶的包。如果不是解釋器自帶的包,則需要具體查找安裝不上的具體原因,進(jìn)一步解決。 在Python的學(xué)習(xí)的過(guò)程中,需要不斷的寫(xiě)代碼,查看別人的代碼的運(yùn)行效果。在這個(gè)過(guò)程中,我們需要不斷安裝程序的依賴包。 對(duì)于python2的解釋器,直接使用pip install 依賴包的名稱(chēng),...
摘要:架構(gòu)必會(huì)幾大技術(shù)點(diǎn)關(guān)于學(xué)習(xí)架構(gòu),必須會(huì)的幾點(diǎn)技術(shù)列表項(xiàng)目反射技術(shù)文件處理屬性文件處理線程安全機(jī)制注解設(shè)計(jì)模式代理機(jī)制基礎(chǔ)過(guò)濾器等等幾樣比較實(shí)用的技術(shù)模板語(yǔ)言工具類(lèi)大家對(duì)于幾大框架望而生畏,實(shí)際上只要明白他的原理,就會(huì)觸類(lèi)旁通,在這里我 Java架構(gòu)必會(huì)幾大技術(shù)點(diǎn) 關(guān)于學(xué)習(xí)架構(gòu),必須會(huì)的幾點(diǎn)技術(shù) 列表項(xiàng)目 java反射技術(shù) xml文件處理 properties屬性文件處理 線程安全機(jī)制...
閱讀 3178·2021-11-22 15:25
閱讀 3855·2021-11-17 09:33
閱讀 3370·2021-11-08 13:15
閱讀 3051·2021-09-22 10:56
閱讀 542·2021-08-31 09:45
閱讀 2755·2019-08-30 13:49
閱讀 3081·2019-08-30 12:52
閱讀 1145·2019-08-29 17:05