如何使用Curl打开安全站点

时间:2015-12-03 13:21:44

标签: linux apache curl

最近我们必须更新我们在办公室使用的一些apach上的SSLProtocol和SSLCipher。

FROM:
SSLProtocol -all +TLSv1 +TLSv1.2 SSLCipherSuite HIGH:!aNULL:+SHA1:+MD5:+HIGH

TO:
SSLProtocol -all +TLSv1.1 +TLSv1.2 SSLCipherSuite EECDH+AES:AES256-SHA:AES128-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH:!EXP:!SRP:!DSS:!LOW:!3DES SSLHonorCipherOrder on SSLVerifyClient none SSLVerifyDepth 1

所有测试都是使用curl命令完成的。但是在变化卷曲开始给出错误之后。

curl -v https://server1:4034/pages/Status.jsp --trace-ascii /dev/stdout
Warning: --trace-ascii overrides an earlier trace/verbose option
== Info: About to connect() to server1 port 4034 (#0)
== Info: Trying xxx.xxx.xxx.xxx... == Info: connected
== Info: Connected to server1 (xxx.xxx.xxx.xxx) port 4034 (#0)
== Info: Initializing NSS with certpath: sql:/etc/pki/nssdb
== Info: CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
== Info: NSS error -5938
== Info: Closing connection #0
== Info: SSL connect error
curl: (35) SSL connect error

我安装了支持TLSv1.2的最新版本(7.46.0)。

有什么方法可以使用curl测试它吗?或者有任何方法来调试curl连接? 感谢

3 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. 按照shcherbak的建议禁用服务器证书验证。

  2. 执行完整的证书验证,为此,您应该拥有该CA的根证书,该证书已为您的服务器签署了证书。将该证书以PEM形式放入某个文件中,例如ca.crt,并为curl提供额外的命令行参数:curl --cacert ca.crt

  3. 这可能不起作用,从你的消息我看到你的curl是针对NSS库构建的,这使得事情稍微复杂一些。 NSS使用自己的证书存储。您可以在Firefox配置文件中找到文件key3.db和cert8.db - 这是Firefox使用的NSS存储。

    要操作这些文件,可以使用Mozilla的certutil工具(NSS库的维护者):https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil。您应该创建cert8(或者如果库具有较新版本,则为cert9)文件,将您的服务器证书添加为可信任,并为该文件提供curl。放置此文件的位置由SSL_DIR环境变量指示,默认为/ etc / pki / nssdb。

    在此处阅读有关CURL安全配置的更多信息:http://curl.haxx.se/docs/sslcerts.html

答案 1 :(得分:1)

您尝试连接的服务器可能没有可信CA.尝试添加-k(不安全选项)

curl -k -v https://server1:4034/pages/Status.jsp --trace-ascii /dev/stdout

答案 2 :(得分:0)

谢谢你们俩。实际上新版本的curl工作正常,测试服务器和apache之间有防火墙。 我不得不在apache服务器上安装新的curl版本,它运行正常。 非常感谢大家的帮助。