在处理 Google OpenID SSL 响应时,我在 Tornado 网络服务器中遇到了 gnutls 特定的错误。我从 Tornado 邮件列表中得到的建议之一是尝试使用 OpenSSL 后端而不是 gnutls。但它在 Ubuntu 服务器(11.10)上似乎并不简单。
在 Ubuntu 服务器上,gnutls由libcurl3-gnutls包提供,openssl curl 支持由libcurl4-openssl-dev包提供。(我不知道为什么后者被命名为4and dev,但我在 apt-cache 搜索中找不到任何其他 openssl+curl 包)。
我libcurl3-gnutls默认安装了,但没有安装libcurl4-openssl-dev。所以我安装了后者并重新启动了 Torando 实例。但这似乎不起作用。我仍然遇到相同的 gnutls 错误。
我在 curl 邮件列表上找到了关于支持 libcurl 不同 SSL 后端的问题的旧讨论,但没有找到今天是如何完成的。到目前为止,我的猜测是 openssl 内置于 libcurl 中,而 gnutls 是通过单独的包提供的(这将解释为什么没有 libcurl3-openssl)。但是我如何让 libcurl 选择 openssl 后端而不是 gnutls?libcurl/pycurl API 中是否有一些选项可以做到这一点?
我尝试卸载libcurl3-gnutls,但 apt-get 提示它也将随之删除python-pycurl。所以那不行。
我有一个在本地主机/端口 80 上运行 apache 的 ubuntu 服务器。它的域是 sub.domain.com
如果我在该机器上向http://localhost发出 curl 请求,它将立即出现“无法连接到主机”的错误。
如果我在该机器上向 sub.domain.com 发出 curl 请求,它将无限循环地坐在那里,直到几分钟后超时。
如果我在另一台机器上的网络浏览器中打开 sub.domain.com,它会显示我的 html 页面。
如果我用另一台机器向 sub.domain.com 发出 curl 请求,它将连接。
这里有什么交易?
我正在编写一个需要从 Internet 下载一些数据的 shell 脚本,我只是在想是否可以依靠cURL它预装在所有 Unix 发行版上。
我知道wget默认情况下不在 OS X 上,但在 OS XcURL上。我还记得我cURL在 Ubuntu Server 上安装,但已经一两年了。我今天尝试了 Ubuntu Server 12.04,它是cURL开箱即用的。
cURL 和 PHP 在几个 CentOS 机器上有一个奇怪的问题。
在本地,我运行的是 CentOS 6.3。远程是 CentOS 5.9
在本地,box 收到一个请求,scp 的一个文件到远程服务器,然后通过 PHP 向远程服务器执行 cURL 请求以发送一些信息。该请求总是在当天的第一次尝试时失败。后续请求工作正常。Remote 有一个有效的 SSL 证书——即便如此,关闭证书和主机验证也不能解决问题。
日志记录并不是很有帮助。将详细程度提高到 11,最有意义的条目如下:
* About to connect() to www.example.com port 443 (#0)
* Trying 203.0.113.10... * connected
* Connected to www.example.com (203.0.113.10) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -5938
* Closing connection #0
* SSL connect error
Run Code Online (Sandbox Code Playgroud)
谷歌搜索错误也无济于事。看起来 twitter 有一个类似的问题(https://dev.twitter.com/discussions/1549),他们显然已经解决了这个问题,但没有详细说明它是如何解决的。
任何关于在哪里寻找/做什么来缓解问题的想法都将不胜感激。
我已根据此页面上的说明创建了一个自签名证书,并已安装它并且它似乎都可以正常工作,但现在我需要cURL信任它。
由于更高版本的 cURL 不在文件中包含受信任列表.pem,因此我在此处下载了 .pem 文件,然后在中输入以下行php.ini:
curl.cainfo = "C:\xampp\php\cacert.pem"
Run Code Online (Sandbox Code Playgroud)
现在我需要知道的是如何cURL信任我的自签名证书?我不需要任何浏览器来信任它,只需 cURL。
几天前,谷歌浏览器更新到版本 58 开始使我的自签名证书无效。它在抱怨失踪subjectAltNames。我做了一些研究并尝试了一些建议(不起作用),但后来找到了这篇文章,这是我唯一可以工作的文章。
还是我?
Yay chrome 现在正在接受我新生成和导入的证书,我正在路上,
直到,我点击了我的PHP网络应用程序中的一个页面,该页面需要从同一台开发机器上的另一个微网络服务加载数据。
stream_socket_client():SSL 操作失败,代码为 1。 OpenSSL 错误消息:错误:14090086:SSL 例程:ssl3_get_server_certificate:
我已经在谷歌上搜索和修改了大约 4 个小时,但我无法理解它。
题
为什么 chrome 接受我的证书。无论其工具一样curl,openssl s_client全部给我unable to verify the first certificate或invalid certificate?我曾尝试将证书作为参数传递,但显然仍然无效。
使用 curl 和 openssl 将证书文件作为参数进行调试继续给我这个错误
SSL 证书验证结果:无法获取本地颁发者证书 (20),
我想我到一天结束时会完全秃顶。
笔记
虚拟机是我的本地开发环境,所以我有多个域,它们有自己的证书和密钥
VM 位于 IP 192.168.33.10 上。这意味着 chrome 没有访问本地主机。但是 curl 和 openssl s_clinet 正在尝试访问 locahost
服务器是运行 ubuntu 14.04 的虚拟机
在带有 MMC(微软管理控制台)的主机上安装自签名证书
错误肯定来自试图访问 Web 服务的客户端类。
我曾尝试将证书作为参数传递,但显然仍然无效。
我完全知道我可以将 verify peer …
在尝试调试网络问题本地我们的内联网,很明显,curl host nslookup和dig不同的表现。凡dig与host返回有问题的URL,IP地址curl和nslookup回报:
curl: (6) Could not resolve host: internal.site.company.com
Run Code Online (Sandbox Code Playgroud)
和
nslookup: can't resolve 'internal.site.company.com`
Run Code Online (Sandbox Code Playgroud)
虽然这不应该的事情,在多予方面的问题的本质,这个问题上和后面发生的docker-machine(使用泊坞窗机上都进行测试virtualbox,并parallels要准确)。在docker-machine和容器它的主机都在他们所需的内部DNS服务器的正确IP地址/etc/resolv.conf。无法解析名称的机器也可以访问所需 URL 的 IP 地址。如上所述,地址是内部站点,我们的 DNS 服务器也是内部站点。该站点可从docker-machine安装的计算机访问和解析。
这让我想到了这些问题......
1) 在幕后,有什么dig和host做的与两者cURL和和不同nslookup?
2)什么可能阻止浏览器或curl以两种方式解析 URLhost并dig成功解析名称?
dig -v: DiG 9.11.1
host -v: host 9.11.1
curl …
我正在尝试https://www.lawsociety.com.au在 Windows 10 和 Ubuntu 16.04上使用 curl访问该网站。它适用于 Ubuntu,但在 Windows 上失败并显示消息error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure。我不确定出了什么问题以及如何解决它。
这是 Windows 机器上的 curl 输出:
> curl -i -v -I https://www.lawsociety.com.au
* Rebuilt URL to: https://www.lawsociety.com.au/
* Trying 125.7.104.7...
* TCP_NODELAY set
* Connected to www.lawsociety.com.au (125.7.104.7) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: D:\dev\curl\bin\curl-ca-bundle.crt
CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS alert, …Run Code Online (Sandbox Code Playgroud) 我正在尝试正确诊断我有权访问的服务器似乎无法通过端口 443 联系互联网上的另一台服务器的问题:
~$ curl https://mydomain.co.uk -vvv
* Rebuilt URL to: https://mydomain.co.uk/
* Trying 1.2.3.4...
* TCP_NODELAY set
* Connected to mydomain.co.uk (1.2.3.4) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to mydomain.co.uk:443
* stopped the pause stream!
* Closing connection 0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to mydomain.co.uk:443
Run Code Online (Sandbox Code Playgroud)
我读到这可能是由于密码不兼容造成的。所以我在不同网络的不同服务器上尝试了它,但这次连接成功: …
我正在 Linux 2 的 Windows 子系统上运行 Ubuntu 18.04。我正在curl使用自签名证书向在 Windows 端运行的 Web 服务发出请求。我收到此错误:
curl: (60) SSL 证书问题:无法获取本地颁发者证书
我想将证书添加到本地商店。我有一个.pfx可用的文件。我知道我可以使用-k,但我想针对该服务器使用其他命令行工具。
我该怎么做呢?
openssl s_client -showcerts -servername server -connect server:443 > foo.pem
openssl x509 -in foo.pem -inform PEM -out foo.crt
sudo cp foo.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
Run Code Online (Sandbox Code Playgroud)
这看起来似乎有道理,但没有用,curl仍然有同样的抱怨。
我也尝试过使用一个DER版本。
sudo rm /usr/local/share/ca-certificates/windows_cert.crt
openssl x509 -in windows_cert.pem -inform PEM -out windows_cert_der.crt -outform DER
sudo cp windows_cert_der.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
Run Code Online (Sandbox Code Playgroud)
别担心,我开始关注这里的一些回复。
https://askubuntu.com/questions/73287/how-do-i-install-a-root-certificate
但毫无进展,这显然是计算领域的一个非常困难的问题。
我发现几个月前他们在我需要使用的命令行工具中添加了一个开关,可以忽略证书问题。