【发布时间】:2013-07-18 21:34:53
【问题描述】:
您好,我在尝试通过 SSL 卷曲我在本地创建的 REST Web 服务时非常头疼。 我不断收到消息“curl: (60) SSL 证书问题:自签名证书 更多详情:http://curl.haxx.se/docs/sslcerts.html curl 默认使用“捆绑包”执行 SSL 证书验证 证书颁发机构 (CA) 公钥(CA 证书)。如果默认 捆绑文件不够用,您可以指定一个备用文件 使用 --cacert 选项。 如果此 HTTPS 服务器使用由 CA 签名的证书 捆绑包,证书验证可能由于以下原因而失败 证书有问题(它可能已过期,或者名称可能 与 URL 中的域名不匹配)。 如果您想关闭 curl 对证书的验证,请使用 -k(或 --insecure)选项。”
这是我遵循的步骤
- 使用 OpenSSL 私有证书和密钥对创建了我自己的 CA 证书 OpenSSL req -x509 -new -config c:\X509CA\openssl.cfg -days 365 -out c:\X509CA\ca\private_ca.pem -keyout c:\X509CA\ca\private_ca_pk.pem 我的 CN:RESTfulCustomer
创建了密钥库和 mycert.pem keytool -genkey -validity 365 -alias myalias -keypass 密码 -keystore myKeyStore.jks -storepass 密码 使用和上面一样的CN
创建了证书签名请求 keytool -certreq -alias myalias -file myCert_csr.pem -keypass 密码 -keystore myKeyStore.jks -storepass 密码
与 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
- 连接 CA 证书文件和 certName.pem 复制 myCert.pem + c:\X509CA\ca\new_ca.pem myCert.chain
- 使用完整证书链更新密钥库 - 通过导入证书的完整证书链来更新密钥库 CertName.jks,如下所示:
keytool -import -file myCert.chain -keypass 密码 -keystore myKeyStore.jks -storepass 密码
最后将其导入Firefox,更新了我的server.xml apache tomacat 7 启动正常,我可以毫无问题地导航到我的ssl 网页。如果不使用 --insecure,Curl 将无法工作。我的卷曲命令
curl -v --cacert ca.pem https://
localhost:8443/RESTfulCustomer/customers.json
上面的 curl 命令给了我消息“curl: (60) SSL certificate problem: self signed certificate”
在禁用 ssl 的情况下为 http//localhost:8080/RESTfuCustomer.customers.json 运行 Curl 命令可以正常工作。
我将 ca.pem 导入 myKeyStore.jks 并重新启动 Apache。 环境 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
任何帮助将不胜感激 谢谢
【问题讨论】:
-
考虑编辑您的问题以提高可读性。随意使用粗体功能来突出重要细节或您的问题是什么。这将使您更快地得到答案。除此之外,欢迎来到 SO!
标签: rest curl self-signed