日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線(xiàn)咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

程序員創(chuàng)業(yè)必備:如何讓Web服務(wù)支持https協(xié)議,有哪些免費(fèi)CA機(jī)構(gòu)

原創(chuàng)聲明

這是本人署名原創(chuàng)文章,未經(jīng)許可不支持轉(zhuǎn)載且請(qǐng)勿抄襲。本公眾號(hào)的所有文章均原創(chuàng)。為了容易理解和記憶,文章以圖解為主、代碼為輔。如果您感興趣,歡迎關(guān)注!

:吳瀟/JAVA高級(jí)工程師

我們都知道,http協(xié)議是明文傳送,安全性很差,被用得越來(lái)越少,正在被https協(xié)議取代。很多瀏覽器例如chrome只要訪(fǎng)問(wèn)一個(gè)http協(xié)議網(wǎng)站,就會(huì)彈出風(fēng)險(xiǎn)提示,讓用戶(hù)感覺(jué)這個(gè)網(wǎng)站不靠譜、有病毒、會(huì)泄漏賬號(hào)密碼,不敢進(jìn),從而對(duì)網(wǎng)站發(fā)展產(chǎn)生不利影響。

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

 

所以,對(duì)于要搞副業(yè)/創(chuàng)業(yè)的程序員來(lái)說(shuō),搭建web服務(wù)一定要支持https。本文就是要教你如何讓web服務(wù)支持https協(xié)議。

假如你對(duì)https協(xié)議中的SSL證書(shū)、CA等概念還不太熟悉,建議先學(xué)習(xí)一下相關(guān)基礎(chǔ),可以參考本篇。

現(xiàn)在我們開(kāi)始搭建https,首先需要一個(gè)合法的SSL證書(shū)(后文簡(jiǎn)稱(chēng)"證書(shū)")。怎么得到合法證書(shū)呢?基本上只有兩條路。

向權(quán)威CA機(jī)構(gòu)購(gòu)買(mǎi)證書(shū)。

自己創(chuàng)建CA(經(jīng)過(guò)一系列配置,效果等價(jià)于權(quán)威機(jī)構(gòu)頒發(fā)的SSL證書(shū))。

向權(quán)威CA機(jī)構(gòu)購(gòu)買(mǎi)證書(shū)的方案是正規(guī)渠道,可以實(shí)現(xiàn)網(wǎng)站HTTPS化,使網(wǎng)站可信,防劫持、防篡改、防監(jiān)聽(tīng)、安全加密,適合知名大型網(wǎng)站。然而缺點(diǎn)很明顯,就是要花錢(qián),而且不是一次性購(gòu)買(mǎi)得到的,而是被設(shè)置了有效期的,有效期到了之后還要續(xù)費(fèi)才能繼續(xù)使用,因此不太適合中小型網(wǎng)站/App。

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

某云平臺(tái)推薦的收費(fèi)CA機(jī)構(gòu)

購(gòu)買(mǎi)證書(shū)方案的操作比較簡(jiǎn)單,只要在云平臺(tái)上找到相應(yīng)服務(wù),填資料,然后付款即可。

不過(guò),這世界上也是有免費(fèi)的權(quán)威CA機(jī)構(gòu)的,可以試試這家免費(fèi)CA。如果這個(gè)能用,就不用自己搭CA了。這家免費(fèi)CA機(jī)構(gòu)名為L(zhǎng)et's Encrypt,地址 https://letsencrypt.org/,在國(guó)外比較有名氣。

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

免費(fèi)且使用廣泛的CA

(某國(guó)內(nèi)排名第一的云平臺(tái)為什么不推薦這家CA?錢(qián)的問(wèn)題?)

另一個(gè)方案就是自己建CA,把CA證書(shū)部署到自己的客戶(hù)端,再用自己的CA給web服務(wù)頒發(fā)證書(shū)。效果上是可以實(shí)現(xiàn)https安全性,而且不用花錢(qián)買(mǎi)證書(shū),缺點(diǎn)只是沒(méi)有權(quán)威機(jī)構(gòu)的認(rèn)可罷了。其實(shí),不管是買(mǎi)證書(shū)還是自己搭建CA,底層原理都一樣。

下面就介紹怎么自己搭建CA,然后給自己的web服務(wù)創(chuàng)建證書(shū),最終在自己的app上實(shí)現(xiàn)https。

一、創(chuàng)建自己的CA

你可能認(rèn)為搭建CA很復(fù)雜,需要安裝服務(wù)端軟件、寫(xiě)配置文件等。然而,實(shí)際上,搭建CA的步驟異常簡(jiǎn)單。在任意一臺(tái)安裝了openssl(一般系統(tǒng)默認(rèn)安裝好了)的linux機(jī)器上,用以下命令生成CA private key:

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

 

執(zhí)行以上命令之后,要求輸入一個(gè)密碼(給這個(gè)CA private key用)。如果不輸入密碼,其他人拿到這個(gè)CA private key之后,不用輸入密碼就可以冒充你。輸入完密碼之后,輸出如下:

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

 

然后,執(zhí)行以下命令生成根證書(shū)(CA證書(shū)):

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

 

然后輸入前面CA private key的密碼,回答一系列問(wèn)題(即查看證書(shū)時(shí)顯示出來(lái)的單位名稱(chēng)、國(guó)家、地區(qū)之類(lèi)的信息)。

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

 

到目前為止,已經(jīng)創(chuàng)建了2個(gè)文件 myCA.key(即CA private key)和myCA.pem(CA根證書(shū))。持有這2個(gè)文件,你就已經(jīng)成為一個(gè)CA,當(dāng)然,是不出名的那種。

二、CA證書(shū)安裝到客戶(hù)端

有了CA private key和CA證書(shū)之后,把CA根證書(shū)安裝到客戶(hù)端上,這個(gè)客戶(hù)端訪(fǎng)問(wèn)自己的web服務(wù)就是https的了。但是,沒(méi)有安裝CA證書(shū)的客戶(hù)端訪(fǎng)問(wèn)你的web服務(wù),依然不支持https。

不同平臺(tái)的客戶(hù)端安裝CA證書(shū)的方法不太一樣,例如在Android手機(jī)上,可以訪(fǎng)問(wèn)"設(shè)置->安全和隱私->更多安全設(shè)置->加密和憑據(jù)"來(lái)查看已經(jīng)安裝的CA證書(shū)(憑據(jù))和安裝自己的CA證書(shū)。

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

android上如何管理根證書(shū)

三、給web服務(wù)器創(chuàng)建證書(shū)

有了CA private key 和 CA根證書(shū)后,我們就可以對(duì)web服務(wù)的證書(shū)進(jìn)行簽名了。web服務(wù)器也需要自己創(chuàng)建一個(gè)證書(shū)(然后拿去給CA簽名),步驟如下。首先創(chuàng)建一個(gè)web server用的private key,命令如下:

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

 

然后,創(chuàng)建一個(gè)CSR(Certificate Signing Request)文件,

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

 

這里的操作與上面生成CA證書(shū)的操作類(lèi)似。

接下來(lái),再創(chuàng)建一個(gè)配置文件。這個(gè)配置文件(文本文件)主要是用來(lái)定義Subject Alternative Name (SAN) 擴(kuò)展的(具體見(jiàn)https://deliciousbrains.com/https-locally-without-browser-privacy-errors/#creating-self-signed-certificate)。例如,創(chuàng)建下面這樣的配置文件(需要根據(jù)你的網(wǎng)站/app名做一些修改):

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = dev.mergebot.com
DNS.2 = dev.mergebot.com.192.168.1.19.xip.io

最后就是用CSR文件、CA private key 、CA根證書(shū)和剛才創(chuàng)建的配置文件,執(zhí)行以下命令生成證書(shū)(用自己的CA簽名):

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

 

openssl x509 -req -in dev.mergebot.com.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial 
-out dev.mergebot.com.crt -days 1825 -sha256 -extfile dev.mergebot.com.ext

提示輸入CA private key的密碼,輸入之后,就得到web服務(wù)的證書(shū)CRT文件了。

四、把CRT證書(shū)文件部署至Linux服務(wù)器

把CRT證書(shū)文件部署到web服務(wù)器有很多種方法,操作不大相同,這里介紹:1)如何把CRT部署到Nginx上;2)把CRT整合到Spring Boot項(xiàng)目中。這兩個(gè)方法應(yīng)該滿(mǎn)足大多數(shù)項(xiàng)目的需要了。另外,獨(dú)立部署的Tomcat服務(wù)器應(yīng)該也支持配置CRT證書(shū),可以自行搜索資料學(xué)習(xí)。

1)CRT部署到Nginx服務(wù)器

讓web服務(wù)器支持https需要安裝Nginx,這里假設(shè)nginx服務(wù)已經(jīng)部署好了。打開(kāi)nginx的配置文件(例如/etc/nginx/sites-available/yoursite.com),找到server段,增加以下指令:

listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /crt文件路徑/;
ssl_certificate_key /web服務(wù)privateKey文件路徑;

修改完nginx配置文件之后,再通過(guò)以下命令重啟nginx即可實(shí)現(xiàn)https!

sudo service nginx reload

2)CRT部署到Spring Boot項(xiàng)目

把CRT集成到Spring Boot項(xiàng)目非常簡(jiǎn)單(主要原因是Spring Boot太強(qiáng)了),只需要在項(xiàng)目配置文件(例如application.properties)中修改名為"server.ssl.***"的屬性即可,例如:

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

Spring Boot中與SSL相關(guān)的配置

通過(guò)配置文件支持https之后,原來(lái)的http訪(fǎng)問(wèn)方式就不再支持了。如果還需要支持http的訪(fǎng)問(wèn)方式,讓http跳轉(zhuǎn)到https,那么還需要在Spring中部署以下代碼:

程序員創(chuàng)業(yè)必備:如何讓W(xué)eb服務(wù)支持https,有哪些免費(fèi)CA機(jī)構(gòu)

讓 http自動(dòng)跳轉(zhuǎn)至https的代碼

權(quán)威講解建議參考SpringBoot官方文檔
https://docs.spring.io/spring-boot/docs/2.1.8.RELEASE/reference/html/howto-embedded-web-servers.html#howto-configure-ssl

這樣,https服務(wù)就搭建起來(lái)了。

現(xiàn)在你學(xué)會(huì)如何把http服務(wù)升級(jí)到https了吧?有沒(méi)有試著搭建一下自己的CA(只需要2條命令)?本文所述方法有什么缺點(diǎn)嗎?有更簡(jiǎn)單的方法嗎?歡迎留言。

參考資料:

https://deliciousbrains.com/https-locally-without-browser-privacy-errors/
https://spinupwp.com/hosting-wordPress/ target=_blank class=infotextkey>WordPress-yourself-ssl-spdy/
https://deliciousbrains.com/ssl-certificate-authority-for-local-https-development/
https://zhuanlan.zhihu.com/p/31385073
https://blog.csdn.net/l4642247/article/details/81631770

以上分析希望對(duì)您的工作和面試有幫助。如果對(duì)互聯(lián)網(wǎng)編程技術(shù)、Java、Spring、Android、C/C++、Linux、個(gè)性化推薦、Community Detection、machine Learning、Deep Learning、Data Mining、Gnuplot、LaTeX等技術(shù)感興趣的話(huà),歡迎關(guān)注本公眾號(hào)。

分享到:
標(biāo)簽:https
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定