关于使用带有自签名证书的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我已经将证书添加到系统密钥链中,并始终信任所有类别。不过,没有浏览器能够获得资源。这是我从Chrome获得的错误消息。
无法与服务器建立安全连接。这可能是服务器的问题,也可能需要您没有的客户端身份验证证书。错误代码: ERR_SSL_PROTOCOL_ERROR
还有其他人遇到过同样的问题吗?
添加:
对于curl,我使用key工具生成java keystore和cert。
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无法建立到server.Anyone的安全连接,我知道如何使safari快乐吗?
发布于 2014-08-08 02:37:09
但是,如果我启动了grizzly服务器,并试图使用curl获取资源,我就会出现错误,比如.
cURL不使用操作系统的密钥链。该规则的例外情况是,如果cURL是针对SecureTransport为iOS或OS构建的。请参见curl.1手册页和-E或--cert选项。即使在这种情况下,也不是为了可信赖的锚。
如果您想要使用特定的CA来验证服务器,那么您应该使用--cacert选项来指定它。您还可以使用此选项指定cacert.pem包。见curl.1手册页。
铬..。错误代码:
ERR_SSL_PROTOCOL_ERROR
这是另一个问题。Chrome使用操作系统的keystore。参见Chromium的根证书策略。
要修复它,您可能需要查看让Chrome接受自签名本地主机证书。
把证书和你的问题一起寄出去也许是个好主意。使用以下方法生成它(假设其PEM编码):
openssl x509 -in <cert> -inform PEM -text -noout还有其他人遇到过同样的问题吗?
其他人可能也经历过这个问题。
https://stackoverflow.com/questions/25187501
复制相似问题