1.背景
由於國際PCI標準更新,Paypal需所有對接商戶進行TLS1.2的升級,否則到2018年7月後商戶的Paypal支付服務將受阻
2.Paypal官方標準
https://www.paypal-notice.com/cn/
3.Paypal官方升級指導工具
https://github.com/paypal/TLS-update#php
4.踩坑之路
關於HTTPS升級這裡不多說,現在全球做在線支付如果誰家還沒升級使用https,那它離死也不遠了
4.1、相同的版本不同的aws服務器結果不一致
筆者在兩臺亞馬遜服務器上進行TLS check,結果如下:
正常的服務器:
不正常的服務器:
可以看到,php curl擴展庫信息什麼的全是一樣的,但確然有一臺服務器不正常
由於不正常的服務器買得比較早,14年採購的,正常的服務器16年採購的,出現這種異常,筆者只能把原因歸結為aws對比較新的服務器進行了底層庫升級
4.2、找到問題
但問題依舊需要解決,查找網上資料得知,tls1.2以上需要curl 7.34版本以上庫才能支持,因而主要問題就是需要升級curl庫
其實這個問題對應的Paypal官方指導工具的這句話:
你需要升級你的php curl版本庫而不是系統curl庫
4.3、curl與libcurl的區別
兩者區別詳見:
https://yq.aliyun.com/wenji/115590
4.4、解決問題
通過上面的簡述,我們可以知道,php curl擴展實際對應的libcurl庫,但是網上實際是找不到單獨的libcurl庫包的,因為curl官方把libcurl庫包封裝在curl庫包裡
換而言之,升級php curl擴展實際上還是要分兩步
其一、安裝新版curl庫包
其二、編譯升級php curl
這裡主要是修改編譯時的--with-curl參數,這個參數需要接升級後的curl安裝路徑,形如 --with-curl=/usr/local/curl
4.5、升級php curl擴展的小插曲
網上有教程說可以不重新編譯php實現curl擴展的安裝,但這種情況有一個前提,就是之前沒有將php curl擴展靜態編譯進php
如果之前已經將php curl擴展靜態編譯進了php,那不好意思,老老實實進行整個php的重新編譯安裝吧,否則以不重新編譯的方式安裝php會報加載了兩個curl擴展的警告,而且它還只會讀到舊的擴展
tips:何謂php 擴展的靜態編譯,就是在最初安裝php時,把需要的擴展附加進./configure的編譯參數裡了
更多精彩內容,請關注求課吧公眾號 itqiuke
閱讀更多 ShopYii跨境 的文章