wget 命令提示 “use ‘--no-check-certificate’” 臨時解決方法

諾大的院子發表於2019-09-04

今天在公司的CentOS伺服器上執行wget命令下載軟體時,出現了下面的提示:

ERROR: certificate common name “baidu.com” doesn’t match requested host name “www.baidu.com”.

To connect to www.baidu.com insecurely, use ‘--no-check-certificate’.

大致意思是伺服器上的證照失效了,導致使用https協議時失敗。雖然可以使用--no-check-certificate忽略證照的檢查,但在其它使用到curl的工具下載時仍然會導致失敗,因為它們無法設定類似的引數(例如PHP的擴充套件管理工具pecl)。使用下面的命令檢視系統的預設證照位置:

php -r "print_r(openssl_get_cert_locations());"

注意:使用以上命令需要PHP安裝openssl擴充套件

Array
(
    [default_cert_file] => /etc/pki/tls/cert.pem
    [default_cert_file_env] => SSL_CERT_FILE
    [default_cert_dir] => /etc/pki/tls/certs
    [default_cert_dir_env] => SSL_CERT_DIR
    [default_private_dir] => /etc/pki/tls/private
    [default_default_cert_area] => /etc/pki/tls
    [ini_cafile] => 
    [ini_capath] => 
)

可以看到證照的預設位置在/etc/pki/tls/cert.pem,這是在安裝Apache時自動生成的證照檔案。如果你的目錄裡沒有證照檔案,使用下面的命令下載一個:

wget https://curl.haxx.se/ca/cacert.pem  /tmp --no-check-certificate

因為我係統上本來就有一個證照檔案了,為了不影響原來的,我將新的證照檔案下載到/tmp目錄中。然後設定以下環境變數,使證照只在當前會話生效:

export SSL_CERT_FILE=/tmp/cacert.pem
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章