本文章,為原創內容,歡迎轉貼連結分享,但未經同意,禁止全文轉載。
這一篇真的是個很硬的文章,但也是篇原創的文章,如果沒興趣就別往下看了,其實
在測試的過程中,透過Google搜尋答案,發現一些網路上無法解決的留言,包括解決不了,所以要放棄的留言,過程中,到今天(2016.04.02)為止我還沒發現真正完整又簡單易懂的解決方案。因為我決定透過文章將這段歷程記錄下來。
緣由:為了符合paypal更新安全升級,而將主機相關安全機制升級,當然這也是不得不作的,因為不升級,就無法使用paypal收款了;這一整段實驗的過程大約3個工作天的測試,當然這3個工作天是分開來的,所謂的分開來是指今天測試完不行,隔天也先暫停,隔幾天讓大腦沉澱一下,再繼續嘗試;因為一般人的集中力有限度,如果一直繃的很緊,很容易發生漏東漏西,而電腦的東西,魔鬼就藏在細節裡,一不小心,就疏忽了,這時候就要花2倍甚至3倍的時間來Debug,發現問題時,才發現原來「那人卻在燈火瀾珊處」,近在眼前;就像彈簧一樣,太緊就容易鬆弛了。
主機為Cent OS 6,網頁伺服器為Apache+php+mysql+openssl
前置作業:備份主機,這個部份絕是最重要的一環。
因為production的主機24小時運作中,除非必要,通常不能停機或關機,造成服務中斷;需要特別留意,因為測試過程中是有可能出現任何不可預測的情況發生,一旦出現這種情況,通常已經來不及,要馬上回復也非常困難;因此我先用一台一模一樣的測試主機來實驗。
從上圖可以發現,最關鍵的點在於1和2,兩個的複雜性其實都很高,但兩個比較起來,2相對容易一些。
因此這一篇讓我們就先從2來看,打開官方提供的連結,相信一般人,應該也搞不清楚,到底要怎麼作,特別是全部都是英文的文件。接著讓我們從2開始吧!
2.將 SSL 證書升級至 SHA-256:
第2點的關鍵之一是要升級成為G5 Root Certificate
我們先打開paypal官方中文昇級文件,通常打開後,看個幾遍,會發現一件事,每個字都懂,但是卻無從下手;當然除非原本就是本行的,不然基本上也搞不清楚到底要怎麼作?接著我來分享一下測試成功經驗。
步驟一:首先是先確定憑證存放區在哪?
ubuntu:/etc/ssl/certs/ca-certificates.crt
centos:/etc/pki/tls/certs/ca-bundle.crt
其他系統可以自行google查詢
如果你是跟傑克老師一樣,使用的是linux中的centos;那麼檔案存放的路徑就在 /etc/pki/tls/certs/ca-bundle.crt
步驟二:執行測試程式
1 2 3 4 5 6 7 8 |
#!/bin/bash echo "All certificates in ca-certificates.crt, listed by subject:" awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/pki/tls/certs/ca-bundle.crt echo "All certificates in ca-certificates.crt, listed by subject, check for presence of VeriSign's 'Class 3 Public Primary - G5':" awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/pki/tls/certs/ca-bundle.crt | grep "G5" @roman-mueller |
一旦知道了路徑,如果您不是centos,請記得將程式中的憑證存放路徑修改為正確。
接著把上述的G5檢測程式,存成gistfile1.sh;加上x的權限;
接著執行測試程式./gistifile1.sh看看,到底憑證是不是符合G5呢?馬上可以揭曉;
如果最後出現底下的訊息,表示您的憑證是新的,底下就不關您的事了。
註 :如果您的主機有安裝過SSL憑證,通常都是新的。
若沒有出現底下訊息
For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
表示,您的憑證是舊的;您就需要再往下作囉!
所以,接著請到底下網址,下載
下載 Symantec 的 VeriSign G5 根憑證
在主機上,使用一般的文字編緝器
從—–BEGIN—–開始複製到—–END—–結束
儲存成ca.pem
接著參考底下指令將ca.pem copy到正確的憑證路徑下,再更新、匯出、再檢查一次;通常就會成功了。
1 2 3 4 5 6 |
cat ca.pem >> /etc/pki/tls/certs/ca-bundle.crt update-ca-trust check update-ca-trust force-enable cp /etc/pki/tls/certs/ca-bundle.crt /etc/pki/ca-trust/source/anchors/ update-ca-trust extract gistfile1.sh |
資料來源:SSL Certificate Upgrade Microsite
傑克老師, 想請問一下這是否表示所有網站都要使用 https 協定才能使用 paypal API? 我的網站是用比較舊的一套 PHP SDK (沒有使用 class 的, 應該是7,8年前的了), 網站也沒有安裝 SSL cert, 是否6月17日前必須要安裝 SSL cert, 更新至 TLS 1.2 ?
1.應該跟SDK比較沒有關係,像我的程式就都沒更新。
2.我使用paypal收錢的網站也沒有申請ssl憑證,沒影響;但如果申請並且安裝完SSL憑證,第1部份直接就更新好了。
3.主要跟您使用的主機比較有影響;不過如果主機是share hosting,應該主機商會幫您處理好;除非使用VPS以上等級或自有主機。
建議看看其他有關paypal升級部份,自已先測試一下。
DEAR 傑克老師,能看到您這篇文章真的是太好了,因為自從收到PAYPAL這封信後,就一直讓我覺得很焦慮,就如您所說,明明都是中文字,每個字也都看得懂,為什麼就是不知道他在說什麼?…但我還是有疑問,我只是一般PAYPAL的用戶,我真的必須如他所說進行SSL憑證升級和TLS 1.2 與 HTTP/1.1 升級嗎?謝謝您的回覆
這問題有點複雜,請問你是用什麼方式收錢? 只是一個paypay網站產生的按鈕嗎?
dear傑克老師:用什麼方式收錢…?我不太清楚,正確來說,我在L平台賣東西,L平台指定我必須在PAYPAL開帳戶,他們再把錢匯到PAYPAL給我
那這個問題就跟你無關了,通常平台商會處理好了喔!
dear傑克老師:所以我不用理他一直寄給我的憑証升級信件?我不用升級我的paypal,照常可以收到款項嗎?謝謝您的回覆
只要詢問你的平台業者就可以囉!
傑克老師,想請問若是使用Paypal內的「付款和要求付款」會有影響嗎?
沒有影響