解決 composer 遇到 SSL certificate problem: certificate has expired 錯誤

使用 Composer 安裝套件遇到 SSL 憑證問題導致無法安裝。過渡解決方法是跳過 SSL 憑證檢查。 

因為是過渡解決方法,請自行評估風險是否採用。

Logo of Composer, a dependency manager for PHP
Copyright © 2011 Nils Adermann, Jordi Boggiano

問題狀況

「Composer 是 PHP 的軟體套件管理系統,它提供用於管理 PHP 軟體和依賴庫關係的標準格式。」(來源:維基百科) 安裝套件遇到 SSL 憑證問題 SSL certificate problem: certificate has expired ,導致無法安裝新套件。

composer met SSL certificate problem: certificate has expired

問題解決方法

法1 修改設定檔

到專案根目錄,修改設定檔 (composer.json) 跳過 SSL 憑證檢查

原檔案內容

{
"require": {
"simplon/mysql": "^2.2",
"phpoffice/phpword": "^0.18.2"
}
}

修改後檔案內容

{
    "config": {
        "disable-tls": true
    },
    "require": {
        "simplon/mysql": "^2.2",
        "phpoffice/phpword": "^0.18.2"
    }
}
到終端機重新輸入安裝新套件的命令

composer require PACKAGE_NAME

或 php /path/to/composer.phar require PACKAGE_NAME   

順利安裝新套件

法2 直接在命令修改安全設定

到終端機重新輸入命令

composer config -g -- disable-tls true

composer require PACKAGE_NAME

安裝時會看到終端機提示「You are now running Composer with SSL/TLS protection disabled.」 可順利安裝新套件。

如果要恢復原本的安全設定,到終端機重新輸入命令

composer config -g -- disable-tls false

 

問題原因

Composer install or update failed because of SSL certificate error - KoolReport 文章提到許多舊系統使用的 DST Root CA X3 SSL 憑證在 2021/9/30 過期。連線的伺服器端與客戶端都要移除過期的憑證,否則會出現錯誤。

Apple 討論區提到:更新作業系統、使用不同瀏覽器、或下載安裝新憑證就可以解決這個問題。

無效的嘗試

1. 先使用 composer 診斷功能

composer diagnose

或 php /path/to/composer.phar diagnose  

但是沒有顯示任何錯誤

2. 使用瀏覽器開啟訊息提到有問題的網址,發現瀏覽器並未顯示任何憑證問題

3. 其他無效的嘗試

  • 更新 MAMP PHP 版本
  • 更新 composer 版本

參考資料



留言