如何使用带有SSL证书的wget

24

我正在使用wget在程序中通过HTTP协议获取一些文件。现在我需要设置安全性,因此我们将HTTP协议更改为HTTPS

更改为HTTPS后如何执行wget。我的意思是如何在两台机器之间建立可信连接,然后执行wget

我想确保只能从某些系统执行wget

3个回答

22

步骤1:SSL证书

首先,如果这台机器连接到了互联网并且SSL证书由可信源签名,那么就不需要指定证书。

但是,如果使用了自签名证书,情况就会变得更有趣。

例如:

  • 如果此机器使用自签名证书,或者
  • 如果您在一个通过代理重新加密所有https连接的网络上

那么您需要信任自签名证书的公钥。您需要将公钥导出为.CER文件。如何获取SSL证书将决定如何获取公钥作为.CER

一旦您获得了.CER文件,然后...

步骤2:信任证书

我建议两个选项:

选项一

wget --ca-certificate={the_cert_file_path} https://www.google.com

选项二

~/.wgetrc上设置选项

ca_certificate={the_cert_file_path}

额外资源


6

苹果macOS用户可以使用cert.pem文件:

wget --ca-certificate=/etc/ssl/cert.pem

或者在你的~/.wgetrc中设置:

ca_certificate = /etc/ssl/cert.pem

根据此页面的说明,如果使用~/.wgetrc文件,则设置应该命名为ca_certificate(带下划线),而不是ca-certificate(带连字符)。 - tony_tiger
1
@tony_tiger 奇怪的是,我认为 ca-certificate 对我有用,但我会编辑帖子,因为这是文档中的内容! - Demitri

1

在Linux上(至少在我的Debian和Ubuntu发行版上),您可以按照以下步骤将您的证书安装为系统级信任。

假设您的证书是~/tmp/foo.pem,请执行以下操作:

如果尚未安装ca-certificates软件包,则先安装它,然后执行以下操作来安装foo.pem

$ cd ~/tmp
$ chmod 444 foo.pem
$ sudo cp foo.pem /usr/local/share/ca-certificates/foo.crt
$ sudo update-ca-certificates

完成此操作后,大多数应用程序(包括wget、Python和其他应用)在远程站点需要时应会自动使用它。

唯一的例外是Firefox浏览器。它有自己的私有证书存储,因此如果您需要在其中使用该证书,则需要通过其设置界面手动安装证书。

至少对我来说,这总是有效的(将公司证书安装到我创建的Linux虚拟机中以获取Internet访问权限)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接