從2018年6月起,微信支付開始在微信支付分、營銷代金券等API,使用權(quán)威CA頒發(fā)的平臺證書標識微信支付的身份信息。出于合規(guī)和安全性考慮,權(quán)威CA為頒發(fā)的平臺證書設(shè)置了有效期,商戶需在證書過期前進行更新操作。本文檔詳細描述了微信支付平臺證書更換的機制,以及提供實現(xiàn)建議。
我們提供以下的機制,幫助商戶在平臺證書更新時實現(xiàn)平滑切換:
1.下載新平臺證書。我們將在舊證書過期前10天生成新證書。商戶可使用平臺證書下載API 下載新平臺證書,并在舊證書過期前5-10天部署新證書。
2.兼容使用新舊平臺證書。舊證書過期前5天至過期當天,新證書開始逐步放量用于應(yīng)答和回調(diào)的簽名。商戶需根據(jù)證書序列號,使用對應(yīng)版本的平臺證書。(我們在所有API應(yīng)答和回調(diào)的HTTP頭部Wechatpay-Serial,聲明了此次簽名所對應(yīng)的平臺證書的序列號。)
由于舊證書過期前的5天內(nèi),微信支付會同時使用新舊證書,因此為實現(xiàn)新老證書的平滑切換,商戶系統(tǒng)需支持多平臺證書。
商戶需從平臺證書下載API獲取證書,并將它們部署到生產(chǎn)環(huán)境中。線上服務(wù)根據(jù)報文頭部的證書序列號Wechatpay-Serial找到對應(yīng)的平臺證書,再使用其中的公鑰進行簽名驗證。商戶需在舊證書過期前5-10天,完成新證書的部署。我們建議:
1.將獲取并部署的過程自動化,并設(shè)置定時(如每日)任務(wù)。這樣可以大大降低證書更新時人為因素帶給商戶系統(tǒng)的風險。
2.使用中控服務(wù)統(tǒng)一獲取和安全存儲證書,其他業(yè)務(wù)邏輯服務(wù)使用的證書均來自于該中控服務(wù),或者直接使用中控服務(wù)進行簽名驗證。
商戶也可以選擇“惰性加載”的方式實現(xiàn)平滑切換。當業(yè)務(wù)邏輯服務(wù)上沒有證書序列號所對應(yīng)的證書時,調(diào)用API獲取對應(yīng)的平臺證書,再進行簽名驗證或敏感信息加密。為了提高效率,商戶可以在短時間內(nèi)進行適當?shù)木彺妗?
實現(xiàn)方式,可參考微信支付API v3的Java庫wechatpay-apache-httpclient
注意:系統(tǒng)中已有的微信支付平臺證書在到達有效期后,商戶系統(tǒng)應(yīng)主動將其作廢,避免安全風險。微信支付不會使用過期的證書
如果商戶發(fā)現(xiàn)證書即將過期或已經(jīng)過期,但系統(tǒng)還不支持證書的平滑更換,請參考下列處理方式。
1.使用微信支付wechatpay-apache-httpclient 的商戶。請確認已升級到v0.1.5,并主動設(shè)置使用AutoUpdateCertificatewsVerifier。請參考自動更新證書功能。
2.若系統(tǒng)已經(jīng)支持多平臺證書,請關(guān)注平臺證書的有效期。在舊證書過期前5-10天,使用微信支付提供的證書下載工具獲取新證書,并部署至生產(chǎn)環(huán)境。
3.若系統(tǒng)只支持一份平臺證書,請使用聯(lián)系微信支付的技術(shù)支持同事。我們將協(xié)助你完成證書的切換。