通过 SSL 的卷曲自签名证书 Web 服务

2023-12-04

您好,我在尝试使用 SSL 在本地创建的 REST Web 服务时遇到了很大的麻烦。我不断收到消息“curl: (60) SSL 证书问题:自签名证书更多详细信息请参见此处:http://curl.haxx.se/docs/sslcerts.html默认情况下,curl 使用“捆绑包”执行 SSL 证书验证 证书颁发机构 (CA) 公钥(CA 证书)。如果默认 捆绑文件不够,您可以指定备用文件 使用 --cacert 选项。 如果此 HTTPS 服务器使用由中表示的 CA 签名的证书 捆绑包中,证书验证可能由于以下原因失败 证书有问题(可能已过期,或者名称可能已过期) 与 URL 中的域名不匹配)。 如果您想关闭curl对证书的验证,请使用 -k(或--insecure)选项。”

这是我遵循的步骤

  1. 使用 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
  2. 创建密钥库和 mycert.pem keytool -genkey -validity 365 -alias myalias -keypass 密码 -keystore myKeyStore.jks -storepass 密码 使用与上面相同的 CN

  3. 创建了证书签名请求 keytool -certreq -alias myalias -file myCert_csr.pem -keypass 密码 -keystore myKeyStore.jks -storepass 密码

  4. 签署 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

  5. 转换为 PEM 格式 - 将签名证书 CertName.pem 转换为仅 PEM 格式,如下所示: Openssl x509 -in c:\path\to\key_store\myCert.pem -out c:\path\to\key_store\myCert.pem -outform PEM

  6. 连接 CA 证书文件和 certName.pem 复制 myCert.pem + c:\X509CA\ca\new_ca.pem myCert.chain
  7. 使用完整证书链更新密钥库 - 通过导入证书的完整证书链来更新密钥库 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(使用前将#替换为@)

通过 SSL 的卷曲自签名证书 Web 服务 的相关文章

  • 在自定义控制器中接受 Spring Data REST URI

    我有一个 Spring Data Rest webmvc 应用程序 我想为其添加一些自定义功能以进行批量操作 我创建了一个控制器 并将其混合到 uri 命名空间中 但我希望它能够像自定义一样接受 URI search查询确实如此 而不仅仅是
  • 如何给所有HttpClient请求方法添加参数?

    我正在编写一些使用 Apache 的 Java 代码HttpClient版本4 2 2使用 RESTful 第三方 API 该 API 具有利用 HTTP 的方法GET POST PUT and DELETE 需要注意的是 我使用的是 4
  • 在 Spring 应用程序中拥有 RestController 和 Controller 的最佳实践

    我不是问是不是possible 我知道是这样 但我想知道在我的应用程序中拥有前端的同时提供休息服务的最佳方式是什么 我正在开发一个 Spring Boot 应用程序 我目前有一个调用 jsp 页面的控制器 以及一个separate休息控制器
  • S3 REST API 和 POST 方法

    我在用着AWS S3 REST API http docs aws amazon com AmazonS3 latest API APIRest html 在解决了一些令人烦恼的签名问题后 它似乎可以工作 但是 当我使用正确的 REST 动
  • 如何保护 RESTful Web 服务的安全?

    我必须实施安全RESTful Web 服务 https www ibm com developerworks webservices library ws restful 我已经使用谷歌做了一些研究 但我陷入困境 Options TLS H
  • 是否可以将默认内容类型设置为“application/json;v=2.0”

    是否可以将默认内容类型设置为 application json v 2 0 我说默认是因为我使用 HttpClient 类 并且使用 DefaultRequestHeaders 将代理设置为默认值 我按照这个例子来创建我的标题https s
  • 如何使用 cURL 和 PHP 抓取 LinkedIn 公司页面?在标头错误中找不到 CSRF 令牌

    我想用 cURL 和 PHP 抓取一些 LinkedIn 公司页面 LinkedIn 的 API 不是为此构建的 因此我必须使用 PHP 来完成此操作 如果还有其他选择 请告诉我 在抓取公司页面之前 我必须通过 cURL 使用个人帐户登录
  • iPhone RESTful Web 服务

    然而 甚至不确定标题是否正确 我想做的是使用标准 NSURLConnection 类来处理调用我的 web 服务的响应 我使用 POST 方法更新数据库 使用 GET 方法从数据库检索行 我遇到的问题是这两个操作可能同时发生 因此处理请求的
  • 如何使用 jquery 在 ajax 调用中设置标头

    我需要从我自己的应用程序调用 Office 365 Rest API 当我在同一浏览器会话上复制并粘贴 url 时 我可以看到一些 XML 如果我将该 URL 粘贴到隐身窗口中 则会收到以下错误 The custom error modul
  • 使用 Spring RestTemplate 时忽略 SSL 证书验证

    我正在使用 Spring RestTemplate 发出 HTTPS 请求 并且我想忽略 SSL 证书 这是我创建restTemplate请求的代码 TrustStrategy acceptingTrustStrategy X509Cert
  • 文件再次获取内容不起作用替代方案

    我尝试了curl 因为file get contents在php中不起作用 任何人都可以给我解决方案 所以使用curl解决它 这里是代码 userData json decode file get contents https graph
  • 如何向最终用户隐藏 REST API Url?

    是否可以隐藏我通过 AJAX 用于填充页面数据的 REST URL 我不希望其他人从我的 REST API 获取和使用 但需要使用它在我的网站中显示内容 如何向最终用户隐藏我的 REST API URL 无法在 JavaScript 中向最
  • PHP:CURL 可以遵循元重定向吗

    CURL 可以使用 CURLOPT FOLLOWLOCATION 遵循标头重定向 但是否可以遵循元刷新重定向 Thanks 是的 但您必须自己解析响应并查找类似以下内容 Obeying 刷新请求是浏览器端的事情 使用DOM解析来查找cURL
  • 在javascript中执行curl请求?

    是否可以用 jQuery 或 javascript 发送curl 请求 像这样的事情 curl H Authorization Bearer 6Q https api wit ai message v 20140826 q 因此 在 PHP
  • Azure API Manager 将所有内容公开,摆脱 Ocp-Apim-Subscription-Key

    我有一些通过 Azure API 管理代理的 REST API 出于某种原因 我希望将其公开以应对所有请求 从开发人员的角度来看 我想摆脱在标头 或请求 中设置密钥 Ocp Apim Subscription Key XXXXXXXXXXX
  • Github 版本如何生成存档文件名?

    我刚刚在 github 上为我的 NFQL 软件创建了版本 这是发布页面 https github com vbajpai nfql releases https github com vbajpai nfql releases 对于最新版
  • RESTful API:仅用于验证的方法/标头组合

    我希望我的 API 有一个仅验证请求 例如 如果我有一个 URL 例如 http api somesite com users 12345 用户正在客户端上填写一份信息表单 我最终会将其修补 放置 发布到该资源 当用户填写表单时 我可能希望
  • 使用 Post 以 REST 方式更新值

    我对 REST 很陌生 所以如果这是一个愚蠢的问题 请原谅我 这样 我就有了客户资源 一个客户有很多信用 所以 我想获取客户积分的 URL 是 客户 21 积分 其中 21 是客户 ID 现在 如果我没有全额积分 如何添加积分 例如 客户有
  • 外部依赖错误的 HTTP 状态代码

    当服务器与外部 API 通信出现问题时 返回的正确 HTTP 状态代码是什么 假设客户端向我的服务器 A 发送有效请求 然后 A 查询服务器 B 的 API 以便执行某些操作 然而 B 的 API 当前抛出 500 错误或因某种原因无法访问
  • Jersey 和 Spring 中的全局异常处理?

    我正在使用 Jersey 和 Spring 3 2 以及 Open CMIS 开发 RESTful Web 服务 我没有使用 Spring 的 MVC 模式 它只是 Spring IOC 和 Jersey SpringServlet 控制器

随机推荐