youtube-dl下载视频出现SSL证书的问题解决办法

$ youtube-dl https://www.youtube.com/watch?v=WBxxxxxxxxx
[youtube] WBxxxxxxxxx: Downloading webpage
ERROR: Unable to download webpage: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)> (caused by URLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'),))
用youtube-dl下载视频的时候出现这个提示,如何解决呢(以debian系统为例)?
网上一般能查到的临时解决方法是加个“--no-check certificate”的参数,但是这样很麻烦,每次都要加这个参数,着实痛苦。有没有其他彻底的解决办法呢?
有的,这里需要将你的python升级到3.7.4,pip也升级到最新版,youtube-dl也升级到最新版。然后分别用--version参数来查看版本号。(在编译python3.7.4的时候还要注意编译一个ssl的模块(在解压后的python包里),这个需要自己百度了,比如 https://www.cnblogs.com/mqxs/p/9103031.html)
安装的方式最好是下载源代码进行编译安装。
另:如果SSL有问题,或者版本较老,还需要重新卸载掉,重新编译安装。

apt-get purge openssl
rm -rf /etc/ssl #删除配置文件 (如果有这个文件的话)
编译与安装 OpenSSL
prefix 是安装目录,openssldir 是配置文件目录,另外建议安装两次,shared 作用是生成动态连接库。

最新的ssl版本参考这里,ftp://ftp.openssl.org/source/,参考修改版本号即可。

wget ftp://ftp.openssl.org/source/openssl-1.1.1c.tar.gz
tar -zxf openssl-1.1.1c.tar.gz
cd openssl-1.1.1c/
./config  --prefix=/usr/local --openssldir=/usr/local/ssl
make && make install
./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
make clean
make && make install

这里有个sh的代码,可以参考(用再mac系统的):
mac-curl-ca-bundle.sh
#!/bin/bash
mkdir /tmp/curl-ca-bundle
cd /tmp/curl-ca-bundle
wget http://curl.haxx.se/download/curl-7.22.0.tar.bz2
tar xzf curl-7.22.0.tar.bz2
cd curl-7.22.0/lib/
./mk-ca-bundle.pl
if [ ! -d /usr/share/curl/ ]; then
	sudo mkdir -p /usr/share/curl/
else
	sudo mv /usr/share/curl/ca-bundle.crt /usr/share/curl/ca-bundle.crt.original
fi
sudo mv ca-bundle.crt /usr/share/curl/ca-bundle.crt
echo
echo "Done!"

 如果直接保存,在MAC下运行不知道情况,不过在debian系统下运行可能会有些问题。所以上面这段代码建议只是参考使用。特别是解压.tar.bz2的压缩包的时候,

.tar.gz     格式解压为          tar   -zxvf   xx.tar.gz

.tar.bz2   格式解压为          tar   -jxvf    xx.tar.bz2 (这种解压方式在debian系统下测试是可行的。)

反正最后一步都是:mv ca-bundle.crt /usr/share/curl/ca-bundle.crt

移动过去后,最后编辑/root目录下的.bashrc,即 $nano /root/.bashrc

在最后面一行加入以下代码:

export SSL_CERT_FILE="/usr/share/curl/ca-bundle.crt" 

然后保存即可。

然后再用youtube-dl来下载YTB视频的时候就不会出现这个SSL错误了,也不要带那个麻烦的参数了。

参考文章(致谢):

https://github.com/ytdl-org/youtube-dl/issues/5317

https://gist.github.com/1stvamp/2158128

 
原文地址:https://www.cnblogs.com/eaglepie/p/11378120.html