我正在为我的大学课程做家庭作业。任务是使用 HTTPS 获取网页nc (netcat)。
要通过 HTTP 获取页面,我只需执行以下操作:
cat request.txt | nc -w 5 <someserver> 80
我request.txt
有一个 HTTP 1.1 请求
GET / HTTP/1.1
Host: <someserver>
现在……一切正常。然而,挑战在于——获取使用 HTTPS 的网页?
我得到了这样的页面证书。这就是我目前陷入困境的地方
openssl s_client -connect <someserver>:443
答案1
nc
不使用 https。 openssl s_client
这是你能得到的最接近的。做这样的事情:
$ cat request.txt | openssl s_client -connect server:443
答案2
ncat --ssl
在 Ubuntu 上:
sudo apt-get install nmap
printf 'GET / HTTP/1.1\r\nHost: github.com\r\n\r\n' | ncat --ssl github.com 443
与超级用户相同telnet 或 netcat 客户端可以通过 SSL 通信吗?但与 一起nmap
使用(例如)。ncat
nc
nc --ssl
在 Debian 或 Ubuntu 上:
sudo apt-get install ncat
答案3
您可能想要使用 stunnel。
一个允许在安全套接字层 (SSL) 内加密任意 TCP 连接的 GNU 程序。
它非常具有 UNIX 风格。一款出色的工具,可完成一项简单的任务。
答案4
向教授或助教寻求帮助。在现实世界中,你永远不会尝试通过 netcat 进行 HTTPS(这openssl s_client
将是我首选的工具,但还有其他选择),因此通过在现实世界中询问人们找到教授想要的“正确”答案的机会很低。我可能会仔细阅读讲座中的所有幻灯片/笔记;通常这些“不可能”的问题实际上在讲座中得到了回答,并提出只是为了看看谁在课堂上真正专心听讲。