2014-10-02 159 views
3

我在我的ColdFusion代码下面的代码工作:忽略SSL证书错误与Wget的

<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#" /> 

这将返回一个空字符串。看来我们需要使用相当于cURL的“-k”作为Wget,以告诉它忽略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. 

我如何使用wget cfexecute内下载Excel文件,忽略SSL证书错误?

编辑:

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

+0

如果从命令行运行,似乎排除我的想法,即wget未编译SSL支持。我注意到你在给出的命令行示例中引用URL的方式。它没有这些工作吗?我期望它会,但它们是我可以看到的与cfexecute之间的一个区别。 – 2014-10-03 11:26:54

+0

另一种可能性 - 你确定命令行和CF使用的是相同版本的wget吗?也许把可执行文件的完整路径作为一个双重检查? – 2014-10-03 11:57:17

+0

路径如何? CF真的知道从哪里得到wget?请尝试在您的wget实例中使​​用显式完整路径启动CF中的wget。 – Konstantin 2015-07-04 16:02:51

回答

2

从wget的手册页(http://linux.die.net/man/1/wget

“HTTPS(SSL/TLS)选项

为了支持加密的HTTP(HTTPS)下载,Wget的必须与外部SSL库,目前OpenSSL的编译。如果Wget编译时没有SSL支持,则这些选项都不可用。“

您可能需要检查您使用的wget版本是否支持SSL。

可以cfhttp做你需要的吗?

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

如果您使用的是自签名证书,你可以把它添加到您的JVM的密钥存储,以避免证书错误。