當前位置:首頁>WordPress建站>網(wǎng)站維護>如何修復 cURL error 60: SSL certificate problem: certificate has expired 錯誤

如何修復 cURL error 60: SSL certificate problem: certificate has expired 錯誤

從2021年9月30日起,HTTP API請求可能會在安裝了Let’s Encrypt證書的WordPress網(wǎng)站上停止工作。

例如,這樣的請求會導致錯誤

$res = wp_remote_get( 'https://abcdef.com/' );
if( is_wp_error( $res ) ){
	echo $res->get_error_message();
}

然后你就會遭遇下方的報錯提示:

cURL error 60: SSL certificate problem: certificate has expired

這樣的錯誤將隨處可見,例如:

  • 在WP管理面板檢查WordPress更新時。
  • 檢查插件更新時。
  • 訪問任何服務(wù)的api時。例如,TinyPNG圖像壓縮以及其他一些使用任何類型請求的插件。

為什么出現(xiàn)證書已過期錯誤?

簡而言之,WP core有一個根證書文件,/wp-includes/certificates/ca-bundle.crt用于檢查通過HTTP API創(chuàng)建的所有請求的SSL。在此文件中,用于為您的站點創(chuàng)建證書的根證書之一已過期。因此,請求無法通過驗證并生成此錯誤。

更詳細的解釋:

在不詳細介紹的情況下,對于非專業(yè)人士來說幾句關(guān)于為什么到期 DST Root CA X3證書將影響Let’s Encrypt頒發(fā)的證書。每個驗證證書的系統(tǒng)都有自己的可信根證書存儲庫。系統(tǒng)將信任在驗證期間使用這些根證書之一的私鑰簽名的證書。根證書本身通常有很長的到期日期,很少更改并且在生成最終主題證書(在這種情況下是域名證書)時不使用,相反,公鑰基礎(chǔ)設(shè)施意味著使用信任鏈 – 根證書用于簽署中間證書和已經(jīng)使用它們來簽署最終主題證書(域證書)。此外,為了讓系統(tǒng)信任最終主題證書,它必須能夠跟蹤從該證書到它信任的根證書之一的完整鏈。

當Let’s Encrypt出現(xiàn)時,它的ISRG Root X1根證書(就像任何新的根證書一樣)無法快速進入大量系統(tǒng)的受信任證書庫。同時,為了項目的成功運行,從一開始就頒發(fā)的證書必須受到最大數(shù)量的“開箱即用”系統(tǒng)的信任(這些系統(tǒng)的用戶沒有任何額外的操作)。在這方面,對于證書,Let’s Encrypt開始使用通向根證書的信任鏈DST Root CA X3,這是大多數(shù)系統(tǒng)認可的。

隨著下一次WP更新,比如 WordPress 5.9,此錯誤將會自行消失,但如果您今天需要解決方案,或者您不打算更新WordPress,但需要有效的HTTP請求,請執(zhí)行以下操作。

cURL error 60: SSL certificate has expired 解決辦法

您需要更新/wp-includes/certificates/ca-bundle.crt文件的內(nèi)容,將其更改為https://curl.se/ca/cacert.pem文件的內(nèi)容。

在這種情況下更改核心文件是可以接受的,因為下次更新WP時,問題就會消失。

手動替換內(nèi)容更新以解決問題

  1. 下載此文件 https://curl.se/ca/cacert.pem。
  2. 使用上述下載以更新/wp-includes/certificates/ca-bundle.crt的內(nèi)容。
  3. 好了,報錯將不再出現(xiàn)。

或添加代碼片段來修復報錯

當您能夠從管理面板運行代碼時,使用代碼會很方便,例如使用Code Snippets插件。

1、將以下代碼添加到 themes functions.php 文件中(或在 Code Snippets 插件中)

/**
 * Goto http://yoursite.com/?update-wp-ca-bundle
 */
if( isset( $_GET['update-wp-ca-bundle'] ) ){

	$crt_file = ABSPATH . WPINC . '/certificates/ca-bundle.crt';
	$new_crt_url = 'http://curl.haxx.se/ca/cacert.pem';

	if( is_writable( $crt_file ) ){
		$new_str = file_get_contents( $new_crt_url );

		if( $new_str && strpos( $new_str, 'Bundle of CA Root Certificates' ) ){
			$up = file_put_contents( $crt_file, $new_str );

			echo $up ? 'OK: ca-bundle.crt updated' : 'ERROR: can`t put data to ca-bundle.crt';
		}
		else {
			echo 'ERROR: can\'t download curl.haxx.se/ca/cacert.pem';
		}
	}
	else {
		echo 'ERROR: ca-bundle.crt not writable';
	}

	exit;
}

使用后,刪除此代碼。

訪問http://yoursite.com/?update-wp-ca-bundle頁面。(替換 yoursite.com 為您的域名…)

好了,一切都恢復正常啦。

聲明:本站所有文章,如無特殊說明或標注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學公眾號 WPDAXUE
網(wǎng)站維護

適合 WordPress 外貿(mào)網(wǎng)站使用的國外 CDN 加速服務(wù)

2021-9-25 8:11:15

WordPress插件網(wǎng)站維護

使用 WPControl 禁用 WordPress 不常用的功能

2022-4-10 11:06:44

0 條回復 A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

南康市| 通辽市| 牙克石市| 改则县| 田阳县| 黄冈市| 绍兴县| 玛纳斯县| 红安县| 天等县| 阳东县| 都江堰市| 凤山县| 广南县| 吉木萨尔县| 镶黄旗| 全椒县| 竹溪县| 拉萨市| 尖扎县| 军事| 铜梁县| 泾川县| 马边| 承德县| 洞头县| 工布江达县| 潜山县| 济南市| 滕州市| 禹州市| 宁蒗| 河间市| 横山县| 城固县| 宾阳县| 珠海市| 罗江县| 南丹县| 射阳县| 临城县|