今天在公司的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 協議》,轉載必須註明作者和本文連結