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證書並在後臺配置證書,配置小程式服務域名。