Linux系统下使用curl进行Https连接
概述
curl是一个命令行工具,支持多种类型的网站,包括https网站。它可以用于连接任何网站,但最常用于连接Web服务器并从中检索数据。在本教程中,我们将学习如何使用curl与网站建立HTTPS连接。我们还将了解如何使用curl检索文件内容。
我们将了解如何使用curl通过HTTPS调用HTTP端点。
什么是Curl?
Curl是一个命令行工具,允许用户使用各种协议(包括HTTP、HTTPS、FTP等)从服务器传输数据到服务器或从服务器传输数据。它支持多种类型的网站,可用于连接任何网站。Curl通常用于连接Web服务器并从中检索数据。
curl的主要功能包括:
从FTP或HTTP服务器下载文件
将文件上传到FTP或HTTP服务器
获取页面(GET)
上传页面(POST)
使用用户身份验证进行POST请求
发送cookie
登录远程计算机
检索表单信息
查看帮助文档
Curl入门
要开始使用curl,您需要先安装它。
受信任的CA签名的SSL证书
建立HTTPS连接时,务必确保您连接到的服务器是受信任的。这可以通过验证服务器的SSL证书来完成。证书必须由受信任的证书颁发机构(CA)签名。如果证书未由受信任的CA签名,则您的连接将不安全,并且通过连接发送的任何数据都可能被拦截。
curl最简单的语法是curl <URL>。让我们使用curl发出请求来调用HTTPS端点:
curl https://tutorialspoint.com
如果curl发出GET请求并顺利收到页面源代码,则服务器可能正在使用受信任的CA签名的SSL证书,这意味着它已通过可靠的机构验证。
自签名证书
如果Web服务使用SSL/TLS连接,但不使用有效的SSL/TLS证书,则我们可能会看到类似于“SSL握手失败”的错误消息。这通常表示Web服务未正确配置HTTPS连接。
如果我们正在为本地Spring Boot应用程序使用TLS,例如,我们正在使用SSL进行配置。
您可以通过添加-k或--insecure选项来忽略SSL/TLS证书检查。
curl -k https://127.0.0.1:8443/tpoint
但是,如果您忽略HTTPS错误,则可能会使自己容易受到攻击。另一种方法是获取要访问的站点的证书。
获取服务器证书
单向SSL验证会针对我们自己的本地副本验证接收服务器证书。因此,我们需要在本地系统上保存服务器证书。
要从SSL连接获取服务器证书列表,我们将使用showcerts参数运行openssl命令。
openssl s_client -showcerts -connect <Domain Name or IP Address>:<Port>
-showcert选项显示整个SSL/TLS认证链。您可以将证书保存到输出文件中,以便以后使用。
openssl s_client -showcerts -connect https://127.0.0.1:8443/tpoint </dev/null | sed -n -e '/-.BEGIN/,/-.END/ p' > tpoint.pem
调用HTTPS端点
要访问HTTPS端点,我们首先需要使用OpenSSL命令行工具或密钥库文件从本地网站保存BAEldung.pem文件。
然后,我们将-cacert选项添加到curl命令中。
curl --cacert baeldung.pem https://127.0.0.1:8443/tpoint
结论
我们解释了如何使用curl命令行实用程序调用HTTP/HTTPS端点。
我们还讨论了如何使用OpenSSL命令行工具获取服务器证书并将其保存到文件中。最后,我们展示了如何将-cacert选项与curl一起使用以访问HTTPS端点。
使用curl是快速测试Web服务和API的好方法。它易于使用、速度快,可用于HTTP和HTTPS连接。