亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

程序員創業必備:如何讓Web服務支持https協議,有哪些免費CA機構

原創聲明

這是本人署名原創文章,未經許可不支持轉載且請勿抄襲。本公眾號的所有文章均原創。為了容易理解和記憶,文章以圖解為主、代碼為輔。如果您感興趣,歡迎關注!

:吳瀟/JAVA高級工程師

我們都知道,http協議是明文傳送,安全性很差,被用得越來越少,正在被https協議取代。很多瀏覽器例如chrome只要訪問一個http協議網站,就會彈出風險提示,讓用戶感覺這個網站不靠譜、有病毒、會泄漏賬號密碼,不敢進,從而對網站發展產生不利影響。

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

 

所以,對于要搞副業/創業的程序員來說,搭建web服務一定要支持https。本文就是要教你如何讓web服務支持https協議。

假如你對https協議中的SSL證書、CA等概念還不太熟悉,建議先學習一下相關基礎,可以參考本篇。

現在我們開始搭建https,首先需要一個合法的SSL證書(后文簡稱"證書")。怎么得到合法證書呢?基本上只有兩條路。

向權威CA機構購買證書。

自己創建CA(經過一系列配置,效果等價于權威機構頒發的SSL證書)。

向權威CA機構購買證書的方案是正規渠道,可以實現網站HTTPS化,使網站可信,防劫持、防篡改、防監聽、安全加密,適合知名大型網站。然而缺點很明顯,就是要花錢,而且不是一次性購買得到的,而是被設置了有效期的,有效期到了之后還要續費才能繼續使用,因此不太適合中小型網站/App。

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

某云平臺推薦的收費CA機構

購買證書方案的操作比較簡單,只要在云平臺上找到相應服務,填資料,然后付款即可。

不過,這世界上也是有免費的權威CA機構的,可以試試這家免費CA。如果這個能用,就不用自己搭CA了。這家免費CA機構名為Let's Encrypt,地址 https://letsencrypt.org/,在國外比較有名氣。

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

免費且使用廣泛的CA

(某國內排名第一的云平臺為什么不推薦這家CA?錢的問題?)

另一個方案就是自己建CA,把CA證書部署到自己的客戶端,再用自己的CA給web服務頒發證書。效果上是可以實現https安全性,而且不用花錢買證書,缺點只是沒有權威機構的認可罷了。其實,不管是買證書還是自己搭建CA,底層原理都一樣。

下面就介紹怎么自己搭建CA,然后給自己的web服務創建證書,最終在自己的app上實現https。

一、創建自己的CA

你可能認為搭建CA很復雜,需要安裝服務端軟件、寫配置文件等。然而,實際上,搭建CA的步驟異常簡單。在任意一臺安裝了openssl(一般系統默認安裝好了)的linux機器上,用以下命令生成CA private key:

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

 

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

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

 

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

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

 

然后輸入前面CA private key的密碼,回答一系列問題(即查看證書時顯示出來的單位名稱、國家、地區之類的信息)。

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

 

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

二、CA證書安裝到客戶端

有了CA private key和CA證書之后,把CA根證書安裝到客戶端上,這個客戶端訪問自己的web服務就是https的了。但是,沒有安裝CA證書的客戶端訪問你的web服務,依然不支持https。

不同平臺的客戶端安裝CA證書的方法不太一樣,例如在Android手機上,可以訪問"設置->安全和隱私->更多安全設置->加密和憑據"來查看已經安裝的CA證書(憑據)和安裝自己的CA證書。

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

android上如何管理根證書

三、給web服務器創建證書

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

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

 

然后,創建一個CSR(Certificate Signing Request)文件,

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

 

這里的操作與上面生成CA證書的操作類似。

接下來,再創建一個配置文件。這個配置文件(文本文件)主要是用來定義Subject Alternative Name (SAN) 擴展的(具體見https://deliciousbrains.com/https-locally-without-browser-privacy-errors/#creating-self-signed-certificate)。例如,創建下面這樣的配置文件(需要根據你的網站/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根證書和剛才創建的配置文件,執行以下命令生成證書(用自己的CA簽名):

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

 

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服務的證書CRT文件了。

四、把CRT證書文件部署至Linux服務器

把CRT證書文件部署到web服務器有很多種方法,操作不大相同,這里介紹:1)如何把CRT部署到Nginx上;2)把CRT整合到Spring Boot項目中。這兩個方法應該滿足大多數項目的需要了。另外,獨立部署的Tomcat服務器應該也支持配置CRT證書,可以自行搜索資料學習。

1)CRT部署到Nginx服務器

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

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

修改完nginx配置文件之后,再通過以下命令重啟nginx即可實現https!

sudo service nginx reload

2)CRT部署到Spring Boot項目

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

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

Spring Boot中與SSL相關的配置

通過配置文件支持https之后,原來的http訪問方式就不再支持了。如果還需要支持http的訪問方式,讓http跳轉到https,那么還需要在Spring中部署以下代碼:

程序員創業必備:如何讓Web服務支持https,有哪些免費CA機構

讓 http自動跳轉至https的代碼

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

這樣,https服務就搭建起來了。

現在你學會如何把http服務升級到https了吧?有沒有試著搭建一下自己的CA(只需要2條命令)?本文所述方法有什么缺點嗎?有更簡單的方法嗎?歡迎留言。

參考資料:

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

以上分析希望對您的工作和面試有幫助。如果對互聯網編程技術、Java、Spring、Android、C/C++、Linux、個性化推薦、Community Detection、machine Learning、Deep Learning、Data Mining、Gnuplot、LaTeX等技術感興趣的話,歡迎關注本公眾號。

分享到:
標簽:https
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定