您好,我在尝试使用 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 密码
签署 CSR
开放式SSL
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 将无法工作。我的卷曲命令
卷曲-v --cacert ca.pem https://
localhost
:8443/RESTfulCustomer/customers.json
上面的curl命令给我消息“curl:(60) SSL证书问题:自签名证书”
运行 http// 的 Curl 命令localhost
:8080/RESTfuCustomer.customers.json 禁用 ssl 工作正常。
我将 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
任何帮助将非常感激
谢谢
如果将来有人遇到这种情况,我必须为以下内容创建证书localhost.com
并将其添加到我的末尾/etc/hosts
像这样的文件,然后curl --cacert cert.crt https://localhost.com
.
127.0.0.1 localhost
127.0.0.1 localhost.com
如果你不在 linux 或 mac 上,你可以在 docker 容器中尝试这个,它将有/etc/hosts
.
我不知道为什么它不能用localhost
作为域名,但curl会一直抱怨自签名证书。可能与 docker 网络或 localhost 关键字的特殊情况有关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)