我编写了一个监听端口8000的REST服务器。我试图使用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选项绕过证书验证,但无济于事。我在这里错过了什么?如果需要更多信息,请发表评论。
修改: 我的朋友建议在cURL命令中只使用http。然后它绕过SSL检查,它工作。但是httsh出了什么问题?我是否还需要为localhost安装证书?另外,为什么没有-k选项有效?
答案 0 :(得分:1)
我的朋友建议在cURL命令中只使用http进行尝试。然后它绕过了SSL检查并且它有效。
看起来您的服务器根本没有启用SSL。这就是HTTP工作和HTTPS没有的原因。使用HTTP没有绕过任何SSL检查,因为没有带SSL的SSL,因此没有SSL检查可以绕过。
另外,为什么没有-k选项有效?
simpMessagingTemplate.convertAndSendToUser(userName, "/realtime/", message);
选项用于跳过SSL(HTTPS)连接上的证书验证。但它只能在首先存在SSL连接时才能工作。由于您的服务器根本不支持SSL -k
无效。
我是否还需要为localhost安装证书?
您需要先在(未知)服务器上启用SSL。如果您编码自己的服务器,那么这意味着额外的编码。而且,一旦服务器完全可以执行SSL,您还需要设置服务器可以提供给客户端的证书。
答案 1 :(得分:0)
就我而言,我必须检查我的虚拟主机配置。 我要做的就是为域定义一个基于名称的特定虚拟主机。
也许,某人只想先进行快速测试,而又不想配置虚拟主机,然后他们会遇到此错误消息。