1. 程式人生 > >SpringBoot微服務的https配置方法(即微信小程式後臺服務搭建解決方案)

SpringBoot微服務的https配置方法(即微信小程式後臺服務搭建解決方案)

前言

最近接觸了一個有關微信小程式的專案。有關小程式後臺服務的https配置踩了不少坑,折騰了一兩天時間,終於實現了小程式後臺服務的部署。這裡就總結一下基於微信小程式,有關SpringBoot後臺的配置方案。

分析一下微信官方文件

根據小程式官方文件描述,微信小程式的wx.request請求有如下幾點要求

● 域名只支援 https (request、uploadFile、downloadFile) 和 wss (connectSocket) 協議; 
● 域名不能使用 IP 地址或 localhost,且不能帶埠號; 
● 域名必須經過ICP 備案; 
● 出於安全考慮,api.weixin.qq.com 不能被配置為伺服器域名,相關API也不能在小程式內呼叫。開發者應將appsecret 儲存到後臺伺服器中,通過伺服器使用 appsecret 獲取 accesstoken,並呼叫相關 API。

重點在於前三條。 
第一條:只支援https請求。這就要求我們的後臺服務需要配置一個SSL證書。 
第二條:說明埠號支援443(https請求預設為443),並且必須是一個域名例如www.baidu.com而不能是IP地址。 
第三條:域名要去備案。

這裡就不介紹第三條域名的備案了。假設大家現在手裡搞到了一個備了案的域名www.myweb.com

如何搭建後臺環境?

第一步:申請一個SSL證書(免費的哦)

在SpringBoot中配置SSL證書

首先,將.pfx檔案放在resources目錄下。這裡假設是123465.pfx 
然後在application.yml檔案中填下如下配置

server:
  port: 443
ssl: key-store: classpath:123456.pfx key-store-password: 123456 keyStoreType: PKCS12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

到此,SSL的配置就結束了。 
此時,啟動SpringBoot工程,會發現SpringBoot內建的Tomcat已經在443埠上啟動了。當然了,前提是在443埠沒有被佔用的情況下。 
這裡寫圖片描述

第三步:微信開發者工具的配置

實際上,在本地開發除錯的時候,不去操作前兩步,也可以繞開HTTPS的限制,使用http請求而且也可以使用非443埠。只需要在【專案設定】中,勾選“不校驗安全域名、TLS版本以及HTTPS證書”即可 
這裡寫圖片描述

然而,如果想要釋出小程式,則必須要改成https請求。那麼在專案部署到公網環境之前,想要在本地測試一下https請求是否好用時該怎麼辦呢?

我們可以通過修改hosts檔案,將域名重定向到127.0.0.1地址上就可以在本地模擬訪問域名https請求了。

首先在微信小程式開發者後臺中,配置域名 
這裡寫圖片描述 
注意,這裡不能加埠號(文件中有提,https預設的埠號即為443),例如:https://www.myweb.com

之後,在系統hosts檔案中新增如下(如何修改hosts檔案網上資料很多,這裡就不多做介紹了)

127.0.0.1 www.myweb.com
  • 1

這樣,在本機訪問www.myweb.com就被重定向到本機地址上了。

取消勾選“不校驗安全域名、TLS版本以及HTTPS證書”,在微信小程式中request請求的url地址就可以寫成www.myweb.com/…,即可在專案部署到公網環境之前,在本地模擬對設定好的域名傳送請求,以便在本地檢測程式是否有問題。

總結一下

1.在本地開發時,暫時可以不需要SSL證書,request請求可以為http和任意埠號。 
2.小程式最終釋出時,需要後臺支援https,並且需要合法域名。此時就需要有個一ICP備案的域名,購買ssl證書並在後臺配置證書,配置小程式服務域名。