当前位置: 首页 > 知识库问答 >
问题:

让我们用vert. x加密

和光启
2023-03-14

我从Let's Encrypt获得了有效的https证书,但将其提供给vert时存在信任问题。x版本3.6.2

我用apache测试了cert,没问题,但是如果我试图用wget到达https vert. x服务器实例,我会得到:

$wgethttps://www.myhost.mydomain/json/read/all-languages
-2019-01-22 10:30:56--https://www.myhost.mydomain/json/read/all-languages
解析www.myhost。mydomain(www.myhost.mydomain)。。。88.14.34.156
连接到www.myhost。mydomain

主机名和ip是伪造的。

我的apache配置代码片段:

SSLCertificateFile /etc/certs/myhost.mydomain/cert.pem
SSLCertificateKeyFile /etc/certs/myhost.mydomain/privkey.pem
SSLCertificateChainFile /etc/certs/myhost.mydomain/chain.pem

vert. x代码:

val httpsOptions = HttpServerOptions()
.setPort(443)
.setSsl(true)
.setPemTrustOptions(PemTrustOptions()
    .addCertPath("/etc/certs/myhost.mydomain/chain.pem"))
.setPemKeyCertOptions(PemKeyCertOptions()
    .addKeyPath("/etc/certs/myhost.mydomain/privkey.pem")
    .addCertPath("/etc/certs/myhost.mydomain/cert.pem")
)
vertx.createHttpServer(httpsOptions).requestHandler(router).listen()


我设置垂直。x记录到调试,但没有出现错误消息。

我错过了什么?

共有2个答案

庞书
2023-03-14

问题在证书链文件链中。佩姆。它似乎不包含完整的证书链。如果您查看该文件,它可能只包含一个中间LE授权证书,即让我们加密授权X3。它与Apache配合使用,因为SSLCertificateChainFile实际上已被弃用,而且根本没有被使用。

另一端的vert. x确实使用了chain.pem文件。它只返回中间证书,因此wget会抱怨。要解决这个问题,请创建一个由chain.pem和cert.pem文件组成的fullchain.pem文件,例如,

cat cert.pem chain.pem > fullchain.pem

然后使用全链。pem带有PEMRustoptions配置。

您不需要将LE根证书放入完整链中。pem文件,因为它应该已经存在于客户端和服务器端。以下是TLS协议RFC的一段摘录。

certificate_list这是一个证书序列(链)。发送方的证书必须排在列表的第一位。后面的每个证书都必须直接证明它前面的证书。因为证书验证要求根密钥独立分发,所以指定根证书颁发机构的自签名证书可以从链中省略,前提是远程端必须已经拥有它才能在任何情况下验证它。

南宫云
2023-03-14

我在这里找到了解决方案:https://community.letsencrypt.org/t/android-doesnt-trust-the-certificate/16498/2

我把cert.pem改成了fullchain。pem在设置PEMKEYCERTOPTIONS设置中,它可以工作。

谢谢你的努力。

 类似资料:
  • 让我们Encrypt通过IdenTrust交叉签名得到他们的中间,这应该是个好消息。但是,我在这个命令的输出中找不到这两个: 我知道可以在每台机器上手动添加受信任的CA,但由于我的应用程序应该是免费下载和可执行的,不需要任何进一步的配置,所以我正在寻找“开箱即用”的解决方案。你有好消息告诉我吗?

  • 我们平时接触的最多的是web模式下的php,当然你也肯定知道php还有个CLI模式。 其实无论哪种模式,PHP的工作原理都是一样的, 都是作为一种SAPI在运行(Server Application Programming Interface: the API used by PHP to interface with Web Servers)。当我们在终端敲入php这个命令时候,它使用的是"co

  • 问题内容: 我想设置让我们加密证书直播服务器与写在围棋LEGO客户nginx的https://github.com/xenolf/lego/ 我将如何使用nginx config来获取证书? 问题答案: 您需要在以下位置添加:80和:443虚拟服务器: 并运行乐高二进制文件: 您的证书文件存储在: 如果nginx已经可以使用有效的SSL / TLS证书,并且您想在证书中添加新域名,则需要排除求解器

  • 我们终于要开始了! 但首先,让我们告诉你什么是 Python。Python 是一种非常流行的编程语言,可以用来创建网站、 游戏、 科学软件、 图形和很多很多其他的东西。 Python 起源于 1980 年代后期,该语言的重要目标是源代码的人类可读性 (而不是机器!)。 这就是为什么它看起来比其他编程语言简单得多。 这使得它易于学习,但不要担心,Python 也是真的很强大 ! Python 的安装

  • 不知道为什么我会得到假证书,即使证书是由我们使用certmanager加密正确颁发的 安装程序在阿里云ECS控制台上运行,其中一个Kube master和一个cube minion组成一个Kubernetes集群。 服务详情 Pod详细信息 已部署舵手证书管理器 正确签发证书 入口详细信息 Letsencrypt Nginx生产定义

  • Vert.x 是一个微服务开发框架,基于事件和异步,依托于全异步Java服务器Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐,开发者可以通过它使用 JavaScript、Ruby、Groovy、Java、甚至是混合语言来编写应用。 概念 Vert.x是事件驱动的,其处理请求的高性能也是基于其事件机制。Vert.x的事件机制中有几个非常重要的概念:Event Lo