我写了一个REST服务器,它监听端口8000。我尝试使用cURL命令从同一台机器调用API-
curl -H "accept: application/json" https://localhost:8000/status -v
我收到以下错误
* About to connect() to localhost port 8000 (#0)
* Trying ::1...
* Connected to localhost (::1) port 8000 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -12263 (SSL_ERROR_RX_RECORD_TOO_LONG)
* SSL received a record that exceeded the maximum permissible length.
* Closing connection 0
curl: (35) SSL received a record that exceeded the maximum permissible length.
我尝试使用-k选项绕过证书验证,但无济于事。我错过了什么?如果需要更多信息,请发表评论。
EDIT:我朋友建议在cURL命令中只使用http。然后它绕过了SSL检查,它工作了。HTTPS有什么问题?我需要安装本地主机的证书吗?为什么-k选项不起作用?
3条答案
按热度按时间2vuwiymt1#
我的朋友建议在cURL命令中只使用http。然后它绕过了SSL检查,它工作了。
您的服务器似乎根本没有启用SSL。这就是为什么HTTP可以工作而HTTPS不能。使用HTTP不会绕过任何SSL检查,因为HTTP没有SSL,因此没有SSL检查可以绕过。
为什么-k选项不起作用?
-k
选项用于跳过SSL(HTTPS)连接上的证书验证。但它只能在首先有SSL连接的情况下工作。由于您的服务器根本不支持SSL,因此-k
将不会有帮助。我需要安装本地主机的证书吗?
您需要首先在您的(未知)服务器上启用SSL。如果你自己的服务器编码,这意味着额外的编码。而且,一旦服务器可以执行SSL,您还需要设置服务器可以提供给客户端的证书。
7lrncoxx2#
在我的情况下,我必须检查我的vhost配置。我必须做的事情是为域定义一个特定的基于名称的vhost。
也许,有人只是想先进行一个快速测试,而不想配置vhost,那么他们就会遇到这个错误消息。
mqkwyuun3#
如果
-k
不工作,并且您希望从服务器获得原始响应,则可以尝试使用http而不是https并使用443端口例如: