您好我正在努力卷曲我通过SSL在本地创建的REST Web服务。 我不断收到消息“curl:(60)SSL证书问题:自签名证书 更多详情:http://curl.haxx.se/docs/sslcerts.html curl默认使用“捆绑”执行SSL证书验证 证书颁发机构(CA)公钥(CA证书)。如果是默认值 捆绑文件不够用,您可以指定备用文件 使用--cacert选项。 如果此HTTPS服务器使用由CA表示的CA签名的证书 捆绑,证书验证可能由于a而失败 证书问题(可能已过期,或名称可能已过期) 与URL中的域名不匹配)。 如果您想关闭curl对证书的验证,请使用 -k(或--insecure)选项。“
这是我遵循的步骤
创建了密钥库和mycert.pem keytool -genkey -validity 365 -alias myalias -keypass password -keystore myKeyStore.jks -storepass密码 使用与上述相同的CN
创建了证书签名请求 keytool -certreq -alias myalias -file myCert_csr.pem -keypass password -keystore myKeyStore.jks -storepass password
与CSR签约 OpenSSL的 ca -config c:\ X509CA \ openssl.cfg -days 365 -in c:\ path \ to \ key_store \ myCert_csr.pem -out c:\ path \ to \ key_store \ myCert.pem
转换为PEM格式 - 将签名证书CertName.pem转换为仅限PEM格式,如下所示: Openssl x509 -in c:\ path \ to \ key_store \ myCert.pem -out c:\ path \ to \ key_store \ myCert.pem -outform PEM
localhost
:8443 / RESTfulCustomer / customers.json 上面的curl命令给我留言“curl:(60)SSL证书问题:自签名证书”
运行http // localhost
的Curl命令:8080 / RESTfuCustomer.customers.json并禁用ssl工作正常。
我将ca.pem导入myKeyStore.jks并重新启动Apache。 Environemnt windows 7,apache tomcat 7,spring security 3.1,curl 7.30.0(i386-pc-win32)libcurl / 7.30.0 OpenSSL / 1.0.1c zlib / 1.2.7
任何帮助都会非常感激 感谢
答案 0 :(得分:0)
万一将来有人遇到这种情况,我必须为localhost.com
创建证书,然后像这样将其添加到我的/etc/hosts
文件的末尾,然后再添加到curl --cacert cert.crt https://localhost.com
。 / p>
127.0.0.1 localhost
127.0.0.1 localhost.com
如果您不在Linux或Mac上,则可以在具有/etc/hosts
的Docker容器中尝试使用。
我不知道为什么不能将localhost
作为域名使用,但是curl会不断抱怨自签名证书。可能与docker联网或localhost关键字有关。
答案 1 :(得分:-1)
请参考以下答案:
总结:
% openssl s_client -showcerts -connect example.com:443 </dev/null 2>/dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' | grep -m1 -B-1 -- '-----END CERTIFICATE-----' > cert.pem
% curl --cacert cert.pem https://example.com
和tada,您可以安全地连接到自签名网站。