嗨,我在尝试通过 SSL 卷曲我在本地创建的 REST Web 服务时非常头疼。我不断收到消息“卷曲:(60)SSL证书问题:自签名证书 更多详细信息:http: //curl.haxx.se/docs/sslcerts.html curl 默认使用证书颁发机构 (CA) 公钥(CA 证书)的“捆绑”执行 SSL 证书验证。如果默认捆绑文件不够用,您可以使用 --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 password -keystore myKeyStore.jks -storepass 密码使用与上面相同的 CN
创建了证书签名请求 keytool -certreq -alias myalias -file myCert_csr.pem -keypass password -keystore myKeyStore.jks -storepass password
使用 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 签署了 CSR
转换为 PEM 格式 - 将签名证书 CertName.pem 转换为仅 PEM 格式,如下所示: Openssl x509 -in c:\path\to\key_store\myCert.pem -out c:\path\to\key_store\myCert .pem - 优于 PEM
- 连接 CA 证书文件和 certName.pem 副本 myCert.pem + c:\X509CA\ca\new_ca.pem myCert.chain
- 使用完整证书链更新密钥库 - 通过导入证书的完整证书链来更新密钥库 CertName.jks,如下所示: keytool -import -file myCert.chain -keypass password -keystore myKeyStore.jks -storepass password 最后导入它进入 Firefox,更新了我的 server.xml apache tomacat 7 启动正常,我可以毫无问题地导航到我的 ssl 网页。如果不使用 --insecure,Curl 将无法工作。我的 Curl 命令 curl -v --cacert ca.pem https://
localhost
:8443/RESTfulCustomer/customers.json
上面的 curl 命令给了我消息“curl:(60)SSL证书问题:自签名证书”
在禁用 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
任何帮助将不胜感激谢谢