在Linux上使用curl连接Https
介绍
curl是一个命令行工具,支持许多不同类型的网站,包括https网站。它可以用来连接任何网站,但它最常用于连接网络服务器并从其中检索数据。在本教程中,我们将学习如何使用curl与一个网站进行HTTPS连接。我们还将看到如何使用curl检索一个文件的内容。
我们将看看如何使用curl通过HTTPS调用一个HTTP端点。
什么是Curl?
Curl是一个命令行工具,允许用户使用各种协议从服务器传输数据,包括HTTP、HTTPS、FTP等。它支持许多不同类型的网站,可以用来连接到任何网站。Curl通常用于连接到网络服务器并从其中检索数据。
卷曲的主要特点是—
- 从FTP或HTTP服务器下载文件
-
将文件上传到FTP或HTTP服务器
-
Fetching pages (GET)
-
Uploading pages (POST)
-
使用用户认证进行POST请求
-
发送饼干
-
登录到远程机器上
-
检索表格信息
-
查阅帮助文件
-
开始使用Curl
要开始使用curl,你需要先安装它。
受信任的CA签署的SSL证书
在进行HTTPS连接时,重要的是确保你所连接的服务器是可信的。这可以通过验证服务器的SSL证书来实现。该证书必须由一个受信任的证书颁发机构(CA)签署。如果证书不是由受信任的CA签署,那么你的连接将不安全,通过连接发送的任何数据都可能被拦截。
使用curl的最简单语法是curl
curl https://www.tutorialspoint.com
如果curl发出一个GET请求,并且没有问题地收到了页面源,那么服务器很可能使用的是可信CA签名的SSL证书,这意味着它已经被一个可靠的机构验证过了。
自签证书
如果一个Web服务使用SSL/TLS连接,但没有使用有效的SSL/TLS证书,那么我们可能会看到一个类似于 “SSL握手失败 “的错误信息。这通常表明网络服务没有为HTTPS连接正确配置。
如果我们在本地的Spring Boot应用程序中使用TLS,我们就说我们要用SSL来配置它。
你可以通过添加-k或-insecure选项,使用curl忽略SSL/TLS证书检查。
curl -k https://localhost: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://localhost:8443/tpoint </dev/null | sed -n -e '/-.BEGIN/,/-.END/ p' > tpoint.pem
调用一个HTTPS端点
为了访问HTTPS端点,我们首先需要使用OpenSSL命令行工具或密钥存储文件从本地网站保存BAEldung.pem文件。
然后,我们将在curl命令中加入-cacert选项。
curl --cacert baeldung.pem https://localhost:8443/tpoint
结论
我们解释了如何使用curl命令行工具来调用一个HTTP/HTTPS端点。
我们还讨论了如何使用OpenSSL命令行工具来获取服务器证书并将其保存到文件中。最后,我们展示了如何使用curl的-cacert选项来访问一个HTTPS端点。
使用curl是一种快速测试网络服务和API的好方法。它很容易使用,速度快,而且可以用于HTTP和HTTPS连接。