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连接。

更新于:2023年1月3日

6000+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告