使用Wget忽略SSL证书错误

48

我有以下的ColdFusion代码,它可以正常工作:

<cfexecute name="curl" arguments = "https://myPath/myFile.xlsx -k" timeout="10" variable="test" />
<cfdump var="#test#" />

使用cURL从指定路径下载Excel文件并将其转储到浏览器中,这很好用。

然而,我无法使用Wget完成同样的事情。

首先我尝试了:

<cfexecute name="wget" arguments = "https://myPath/myFile.xlsx" timeout="10" variable="test" />
<cfdump var="#test#" />

这将返回一个空字符串。似乎我们需要使用Wget的等效选项"-k",来告诉它忽略SSL证书错误。因此我尝试了:

<cfexecute name="wget" arguments = "--no-check-certificate https://myPath/myFile.xlsx" timeout="10" variable="test" />
<cfdump var="#test#" />

这给我带来了以下结果:

Usage: wget [OPTION]... [URL]... Try `wget --help' for more options. 

如何在cfexecute中使用Wget下载Excel文件并忽略SSL证书错误?

编辑:

直接从命令行运行wget --no-check-certificate "https://myPath/myFile.xlsx"可行。


如果从命令行运行,那似乎排除了我的想法,即wget未使用SSL支持进行编译。我注意到你在命令行示例中给出URL周围有引号。没有这些引号它是否能正常工作?我认为会,但这是我在那个和cfexecute之间看到的唯一区别。 - Andrew Myers
1
另一个可能性是,您确定命令行和CF正在使用相同版本的wget吗?也许在CF中将可执行文件的完整路径作为双重检查? - Andrew Myers
路径方面怎么样?CF真的知道从哪里获取wget吗?请尝试使用显式完整路径启动CF中的wget实例。 - Konstantin
2个回答

61
请使用wget命令,并加上--no-check-certificate参数。例如:
wget --no-check-certificate "https://myPath/myFile.xlsx"

应该可以正常工作。


4

根据wget的手册(http://linux.die.net/man/1/wget),"HTTPS ( SSL/TLS )选项",为了支持加密HTTP(HTTPS)下载,必须使用外部SSL库编译Wget,目前是OpenSSL。如果编译Wget时没有SSL支持,则这些选项都不可用。您可能需要检查您正在使用的wget版本是否支持SSL。

但是,cfhttp是否可以满足您的需求呢?

https://wikidocs.adobe.com/wiki/display/coldfusionen/cfhttp

如果您正在使用自签名证书,则可以将其添加到JVM的密钥库中,以避免证书错误。

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