wget 命令提示 “use ‘--no-check-certificate’” 临时解决方法

今天在公司的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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!