PHP cURL Error: Peer reports incompatible or unsupported protocol version.

PHP cURL 遇到的錯誤:cURL Error: Peer reports incompatible or unsupported protocol version.,探討解決方案。

範例程式碼

以下是我使用的範例程式碼,用於向 API Server 傳送資料:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_DEFAULT);
// 執行 cURL 請求
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'cURL Error: ' . curl_error($ch) . "\n";
} else {
echo "Response:\n";
echo $response;
}

此程式碼導致錯誤,因為主機與 API Server 支援的 SSL/TLS 協議不匹配。

系統環境

發生原因

檢查 OpenSSL 版本後發現,OpenSSL 1.0.2k-fips 只支持到 TLS 1.2,但目標 API Server 僅允許 TLS 1.3。這就導致了協議不匹配,從而引發了錯誤。

OpenSSL 1.0.2k-fips 支援的 SSL/TLS 協議:

因為 OpenSSL 1.0.2 不支持 TLS 1.3,而 API Server 僅允許 TLS 1.3,導致 SSL/TLS 協議不兼容。

解決方案

1. 升級主機的 SSL/TLS 支援

若 API Server 僅支援 TLS 1.3,主機必須升級至支援 TLS 1.3 的 OpenSSL 版本(至少為 OpenSSL 1.1.1)。這樣可以確保 PHP 主機與 API Server 之間的 SSL/TLS 協議匹配。

2. 讓 API Server 向下兼容 TLS 1.2

如果 API Server 能夠向下兼容 TLS 1.2,則可以暫時允許 TLS 1.2 通訊,以解決當前的不兼容問題。儘管 TLS 1.3 更加安全,但在過渡期間允許使用 TLS 1.2,可以確保現有系統正常運行。

實作過程

在我的情況下,由於主機當前無法即時升級至支援 TLS 1.3 的 OpenSSL,我選擇了讓 API Server 向下兼容 TLS 1.2 的方案。這樣系統可以恢復運作,並且在未來 OpenSSL 升級至支援 TLS 1.3 時,再切換至僅支持 TLS 1.3 的模式。

在 Plesk 中,可以使用以下命令來啟用 TLS 1.2 和 TLS 1.3:

# plesk bin server_pref -u -ssl-protocols 'TLSv1.2 TLSv1.3'

執行此命令後,請重啟相關服務(如 Apache、Nginx、PHP-FPM)以應用更改。
這樣可以臨時解決協議不兼容的問題。

檢測工具

SSL Labs

當不確定目標主機支援哪些 TLS 協議版本時,可以使用 SSL Labs 工具來檢查目標主機的 TLS 支援情況。該工具可以幫助你確定目標主機的協議支援,從而避免不兼容問題的發生。

參考資料

https://www.plesk.com/kb/support/how-to-enable-disable-tls-protocol-versions-in-plesk-for-linux/
https://talk.plesk.com/threads/best-practice-for-upgrading-openssl-on-centos-7-9-obsidian-v18-0-54.371042/
https://www.isres.com/jingyan2/79.html
https://blog.csdn.net/weixin_46858088/article/details/135718447

[……]

閱讀更多

WordPress wp_remote_post curl: (35) Peer reports incompatible or unsupported protocol version

分享如何處理使用 WordPress 的 wp_remote_post() 函數時遇到的錯誤:curl: (35) Peer reports incompatible or unsupported protocol version,探討解決方案。

範例程式碼

以下是我使用的範例程式碼,用於向 API Server 傳送資料:

$crm_api_url = 'https://crm.example.com/api/hello';
$response = wp_remote_post( $crm_api_url, [
'body' => $post_body,
]);
wp_die( print_r( $response, true ) );

此程式碼導致錯誤,因為主機與 API Server 支援的 SSL/TLS 協議不匹配。

系統環境

發生原因

檢查 OpenSSL 版本後發現,OpenSSL 1.0.2k-fips 只支持到 TLS 1.2,但目標 API Server 僅允許 TLS 1.3。這就導致了協議不匹配,從而引發了錯誤。

OpenSSL 1.0.2k-fips 支援的 SSL/TLS 協議:

因為 OpenSSL 1.0.2 不支持 TLS 1.3,而 API Server 僅允許 TLS 1.3,導致 SSL/TLS 協議不兼容。

解決方案

1. 升級主機的 SSL/TLS 支援

若 API Server 僅支援 TLS 1.3,主機必須升級至支援 TLS 1.3 的 OpenSSL 版本(至少為 OpenSSL 1.1.1)。這樣可以確保 WordPress 主機與 API Server 之間的 SSL/TLS 協議匹配。

2. 讓 API Server 向下兼容 TLS 1.2

如果 API Server 能夠向下兼容 TLS 1.2,則可以暫時允許 TLS 1.2 通訊,以解決當前的不兼容問題。儘管 TLS 1.3 更加安全,但在過渡期間允許使用 TLS 1.2,可以確保現有系統正常運行。

實作過程

在我的情況下,由於主機當前無法即時升級至支援 TLS 1.3 的 OpenSSL,我選擇了讓 API Server 向下兼容 TLS 1.2 的方案。這樣系統可以恢復運作,並且在未來 OpenSSL 升級至支援 TLS 1.3 時,再切換至僅支持 TLS 1.3 的模式。

在 Plesk 中,可以使用以下命令來啟用 TLS 1.2 和 TLS 1.3:

# plesk bin server_pref -u -ssl-protocols 'TLSv1.2 TLSv1.3'

執行此命令後,請重啟相關服務(如 Apache、Nginx、PHP-FPM)以應用更改。
這樣可以臨時解決協議不兼容的問題。

檢測工具

SSL Labs

當不確定目標主機支援哪些 TLS 協議版本時,可以使用 SSL Labs 工具來檢查目標主機的 TLS 支援情況。該工具可以幫助你確定目標主機的協議支援,從而避免不兼容問題的發生。

參考資料

https://www.plesk.com/kb/support/how-to-enable-disable-tls-protocol-versions-in-plesk-for-linux/
https://talk.plesk.com/threads/best-practice-for-upgrading-openssl-on-centos-7-9-obsidian-v18-0-54.371042/
https://www.isres.com/jingyan2/79.html
https://blog.csdn.net/weixin_46858088/article/details/135718447

[……]

閱讀更多

更新了Whois資料?如何秒查Whois修改!

更新了Whois資料?如何秒查最新動態!

更新了你的域名資訊,迫不及待想看看變化了沒?我們都經歷過那種刷新鍵按到手軟,卻還是看到老舊資料的無奈。今天,我要和大家聊聊,怎麼樣能夠在更新Whois資料後,快速獲得最新的更新!

Whois365

網址:https://www.whois365.com/

這是先前我最常查詢 Whois 的線上工具,但這次我更新我註冊資料後,發現一直都沒有變化,過了一個小時還是沒變化,我懷疑 whois365 有快取機制,無法快速查到我已修改的正確內容。

ICANN Lookup

網址:https://lookup.icann.org/en

接下來,我想向大家介紹另一個可以快速查詢到Whois資料更新的線上工具——ICANN Lookup。

ICANN Lookup提供了一種更直接和即時的方式來查詢Whois資料。與其他Whois查詢工具不同,ICANN Lookup直接與全球域名註冊數據庫接口,能夠提供最即時、最準確的域名註冊信息。

為什麼ICANN Lookup比較快?

透過ICANN Lookup,你不僅可以獲得最新的Whois資料,還可以確保這些資訊是準確無誤的。無論你是域名擁有者還是僅僅是對某個域名感興趣的人,這都是一個值得信賴的查詢工具。

對於那些更新了Whois資料後希望快速確認更新是否生效的用戶來說,ICANN Lookup無疑是最佳選擇。快去試試吧!

[……]

閱讀更多

刷新 Line 針對網址 og:image 的快取 refresh LINE URL og:image Cache

寫前有寫過一篇如何刪除Line 針對網址訊息的og:image快取,今天需要這功能時居然沒作用了,Line還是自顧自的秀出舊圖片
https://vector.cool/clear-line-url-preview-cache/

即便使用 Line 的工具 poker 刪除緩存,重新抓取已經抓到新的 og:image 圖片,但實際在 Line 貼上相同網址,一樣呈現舊圖,跟客戶解釋這是緩存過幾天就會好,但總是有瘋子客戶會瘋狂追問,為什麼還沒好,為什麼還是舊圖、什麼時候會好、好了沒,為了耳根清靜,我找到一個新方法能刷新,也許也能幫助到你

1.確定目標網頁正確設定 og:image 標籤

檢查一下,有可能真的是你的問題,那客戶罵你是剛好而已,哈,先確定是否存在這標籤,另外也要確定標籤上的連結是可以正常開啟的,當然你也可以貼到 Facebook 塗鴉牆驗證一下,如果設定正確,Facebook 將會抓到你預期要呈現的縮圖

2.在網址上加參數

假定你要刷新預覽圖片的網址為:
https://example.com
你只要在這網址上加上參數,至於參數要加什麼就隨便你,加上參數大概會長這樣
https://example.com?aaa=bbb

3.貼到 Line 上

把步驟2加上參數的網址貼到 Line 上,此時 Line 就會刷新該網址的預覽圖片了,如果成功刷新圖片了,即便目標網址移除參數後,仍然會是新的預覽圖片

試試看,看對你們有用嗎?

[……]

閱讀更多

簡單取得 Line 官方 QRCcode 分享網址,分享在網頁上

相信你一定對 Line 這個通訊軟體不陌生吧!畢竟,它是台灣的市佔率最高的即時通訊軟體,連婆婆媽媽阿公阿麼每天也都在 Line,無論工作與生活 Line 與台灣人密不可分。

除了聊天、打電話,罵老闆,還可以透過 Line 來訂購產品,做即時客戶服務,也因如此,在商業應用上,經營 Line 來貼近使用者,增加社群力更是不可或缺的一環,而網頁經營者要將網頁與 Line 連接最快速的做法,就是透過 QRCode 的方式,讓 Line 用戶透過行動裝置的 Line APP 掃描 QRCode,快速連結到 Line 聊天室或 Line 社群,省去了輸入 ID 的麻煩。

QRCode 掃描加 Line 這件事相信大家也都不陌生,其實 Line 官方有提供一個官方版的 Line 網頁,頁面網址大概長得像像面這樣的格式

https://line.me/R/ti/p/@abcdef

點連結會進到 Line 官方 QRCode 的頁面(如下圖)

所以網頁分享 Line QRCode 最快速的做法就是,直接連結到這個頁面,透過官方 QRCode 頁面也讓人更信賴,不過也不知道為什麼 Line 官方不做個 QRCode 網址分享產生器,大概是跟商業策略有關,本篇就不討論,本篇文章教您如何簡單的取得這個連結,讓您簡單的將QRCode 超連結,放進網頁或文章中,照著下列圖文即可

開啟 Line APP
1.下方頁籤切換到「主頁」
2. 點選右上角的齒輪圖標進入「設定」頁面

3. 點選「個人檔案」進入個人檔案頁面

4.選擇行動條碼

5. 按複製連結

複製到剪貼簿的網址就是 Line 的分享網址囉,趕快貼到網頁上吧

[……]

閱讀更多

清除 LINE 快取、暫存、預覽圖片 – Clear LINE URL Preview Cache.

相信大家都有這經驗,修改了網頁的標題、描述或預覽圖片,將網址貼到Line,居然還是顯示舊的,未更改之前的資料,這原因是Line為優化程式效能,有個快取功能,也就是說當L ine 機器人爬過,取得資訊後會把取得的資料存入快取資料庫,當第二次貼相同網址時,會直接去快取資料庫中抓資訊,所以不會真實反映當下的標題、描述內容。

但通常客戶不太會理你說的這些,只會把問題丟給你,以下就是解決方法囉,Line 推出了一個給開發人員的好功能,可以重新抓取網頁的資訊來取代原本抓取的資料

更新 !!! 原本文方法似乎已經不管用了,請參考最新做法
https://vector.cool/refresh-line-url-ogimage-cache/

Line 清除快取功能網址

http://poker.line.naver.jp/

把網址打上去,勾選 Clear Cache 重抓,就這麼簡單!!

refrence
https://blog.no2don.com/2020/11/line-line-clear-line-url-preview-cache.html

[……]

閱讀更多

小店也可落實「QRCode實聯制」,免費使用、避免接觸、保障顧客隱私

小店也可落實「實聯制」,免費使用
QRCode 避免接觸傳染,保護顧客隱私
本公司緊急開發,請自由取用、分享[……]

閱讀更多

How to disable GTM debug mode

Google Tag Manager (GTM) 提供了很多方便收集使用者行為的工具,但前端會出現如下圖的除錯小工具視窗,方便我們開啟除錯及預覽模式,但當我們測試完成後將網站投入於生產環境中,發現還是會出現這小工具視窗,即使關閉了,當刷新頁面後仍會出現,似乎關閉不了它,本篇就來處理這傢伙,教您如何關閉 Google Tag Manager (GTM) 除錯工具的小工具視窗。

開啟代碼管理工具面版 (GTM)

  • 取消勾選左下角 Include debug signal in the URL 核選方塊
  • 按 Popup 視窗右上角的叉叉關閉視窗

停止除錯模式

做到這一步基本上已經關閉了除錯模式了,這時可以到網頁上去看一下GTM除錯工具的小工具視窗是否還在,如果還在,就按下小工具視窗的右上角的叉叉,關閉這個視窗,它就不會出現囉。

參考資料:
https://support.google.com/tagmanager/answer/6107056?hl=zh-Hant
https://www.analyticsmania.com/post/4-ways-how-to-turn-off-google-tag-manager-debug-mode/

[……]

閱讀更多

設定 G Suite Email MX 記錄

申請完 G Suite 並在管理面版設定好網域,卻還不能發信,請檢查你的DNS紀錄是不是少了MX的紀錄了呢?Google G Suite 要設定五筆MX紀錄,email才能正常運作:

新增 G Suite MX 記錄

名稱/主機/別名存留時間 (TTL*)記錄類型優先順序值/回應/目的位置@ 或保留空白3600MX1ASPMX.L.GOOGLE.COM@ 或保留空白3600MX5ALT1.ASPMX.L.GOOGLE.COM@ 或保留空白3600MX5ALT2.ASPMX.L.GOOGLE.COM@ 或保留空白3600MX10ALT3.ASPMX.L.GOOGLE.COM@ 或保留空白3600MX10ALT4.ASPMX.L.GOOGLE.COMhttps://support.google.com/a/answer/140034?hl=zh-Hant

設定DNS紀錄

如果你DNS是代管在 Cloudflare 上的話只要按照下列幾個步驟就可以成功設定了

最後就是測試一下 G Suite 的 Gmail 收發可不可以通了喔

[……]

閱讀更多

綠界金流開發及測試環境

開發後台入口:

https://vendor-stage.ecpay.com.tw/User/LogOn_Step1

測試帳戶資訊

測試帳號 stagetest1234 測試密碼 test1234 測試統編 53538851

系統介接資訊

商店代號2000132

服務名稱介接 HashKey介接 HashIV金流、MPOS5294y06JbISpM5x9v77hoKGq4kWxNNIS電子發票ejCk326UnaZWKisgq9jcZX8Ib9LM8wYk物流5294y06JbISpM5x9v77hoKGq4kWxNNIS[……]

閱讀更多