gpt4 book ai didi

maven - Grizzly 服务器中止了 SSL 握手

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:42 26 4
gpt4 key购买 nike

我对使用带有自签名证书的 SSL 有疑问。我在这里使用这个例子 http://people.apache.org/~gmazza/restexamples/https-clientserver-grizzly

单元测试完美运行。但是,如果我启动 grizzly 服务器,并尝试使用 curl 获取资源,我会收到如下错误:

curl -v https://localhost:8443/api/v1/hello
* Adding handle: conn: 0x7ff69b004400
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7ff69b004400) send_pipe: 1, recv_pipe: 0
* About to connect() to localhost port 8443 (#0)
* Trying ::1...
* Trying fe80::1...
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8443 (#0)
* Server aborted the SSL handshake
* Closing connection 0
curl: (35) Server aborted the SSL handshake

我已经将证书添加到所有类别始终受信任的系统 key 链中。尽管如此,没有浏览器可以获取资源。这是我从 Chrome 收到的错误消息。

无法与服务器建立安全连接。这可能是服务器的问题,或者它可能需要您没有的客户端身份验证证书。错误代码:ERR_SSL_PROTOCOL_ERROR

有没有人遇到过同样的问题?

添加:

对于 curl,我使用 key 工具生成 java keystore 和证书

keytool  -genkey -keystore ./keystore_server -alias serverKey -dname "CN=localhost, OU=Jersey, O=Sun Microsystem, L=Prague, ST=Czech Republic, C=CZ"  
keytool -export -alias serverKey -rfc -keystore ./keystore_server > ./server.cert
openssl x509 -in server.cert -inform PEM -text -out server.pem

然后我跑了

curl -E server.pem -v https://localhost:8443/api/v1/hello -u "username:password"

但是,我遇到了和以前一样的错误。

对于浏览器,我现在已经让它适用于 Firefox 和 Chrome。但是,我仍然无法使用 Safari。我收到错误消息说 Safari 无法打开页面,因为 Safari 无法与服务器建立安全连接。任何人都知道如何让 Safari 快乐?

最佳答案

However, if I started grizzly server, and try to use curl to get the resources, I got errors like...

cURL 不使用操作系统的钥匙串(keychain)。该规则的异常(exception)情况是如果 cURL 是针对 iOS 或 OS X 的 SecureTransport 构建的。参见 curl.1 the man page-E--cert 选项。即使在那种情况下,它也不适用于受信任的 anchor 。

如果您想使用特定的 CA 来验证服务器,则应使用 --cacert 选项指定它。您还可以指定 cacert.pem与此选项捆绑在一起。参见 curl.1 the man page .


Chrome ... Error code: ERR_SSL_PROTOCOL_ERROR

这是一个不同的问题。 Chrome 使用操作系统的 keystore 。查看 Chromium 项目的 Root Certificate Policy .

要修复它,您可能需要查看 Getting Chrome to accept self-signed localhost certificate .

将证书与您的问题一起发布可能是个好主意。使用以下内容生成它(假设其 PEM 编码):

openssl x509 -in <cert> -inform PEM -text -noout

Has anyone else encountered the same problem?

其他人可能也遇到过这个问题。

关于maven - Grizzly 服务器中止了 SSL 握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25187501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com