OpenSSL 验证返回代码:21(无法验证第一个证书)来自另一个组织的 Java Wildfly 和 MS CA 证书

发布时间:2021-03-08 17:21

我正在为我们公司的应用程序设置 Wildfly 网络服务器。我之前通过创建通配符证书使用我们的内部 MS CA 完成了此操作,并且能够毫无问题地执行此操作。通常我创建通配符 Cert 然后导出 pfx。我使用 OpenSSL 提取证书,然后将私钥提取到单独的文件中。接下来我使用 OpenSSL 从这些文件中构建一个 pkcs12 pfx 文件。我获取密钥库文件,将其放入 Wildfly 配置文件夹中,使用密钥库及其密码更新 Standalone,然后添加行以使用 8443。重新启动应用程序。我使用 GPO 将 Root crt 推出到工作站并完成。一切正常。

这次我们的客户想要做证书,我们为通配符创建了一个 csr 并保存了私钥。从他们那里得到通配符证书,然后是 CA 和 CA-SUB crt 文件。还给了我们一个包含 Root 和 Sub cert 组合的文件。使用以下命令构建新的 pkcs12 密钥库:

openssl pkcs12 -export -out "New Wildcard PFX keystore" inkey private.key -in "Cleints wildcard.cer" -certfile "Cleints Root and Sub 组合的cer文件"

我还自己添加了 sub 并自己添加了 root。

当我将上面创建的新通配符 PFX 密钥库文件添加到 Wildfly 配置并转到网站时,我在 chrome 中收到以下错误。

SSL Error In Chrome

当我运行下面的命令时,我得到

openssl s-client -connect ServerFQDN.net:8443

无法验证 Frist 证书 OpenSSL S_Cleint Unable to Verify Output

我运行了 debug 命令,发现可以看到通配符名称 SUB 和根。一切似乎都很好。我已经多次在服务器上卸载并安装了 root 和 sub crt。确保它们在受信任的文件夹中,子文件夹在该文件夹中,以防万一。我不确定我做错了什么。

我注意到的一件事是,当我对网站运行 OppenSSL S-cleint 时,该命令永远不会完成,就像它试图到达某些东西而不能。我是否需要访问他们的 CA,服务器是否应该能够将其作为某种验证过程进行访问。我需要设置 DNS 记录吗?


更新信息 3-9-21

我在这方面做了更多工作。我在之前使用过的 HA 代理设置上获得了证书,但遇到了同样的问题。我在想问题是我如何创建证书。

客户给了我 3 个 .crt 文件,一个用于根 CA,1 个用于子 CA,1 个是两者的组合。我还为我们提供的通配符 csr 提供了 .cer 文件。

然后我运行了这个命令。

openssl pkcs12 -export -out "New Wildcard PFX keystore" -inkey private.key -in "Cleints wildcard.cer" -certfile "Cleints Root and Sub 组合的 .cer 文件"

我得到的私钥文件最后有一个 .enc,我相信它是加密的。我将它的名称更改为 private.key 并通过这种方式运行它。 zi 我很确定它解密了它并且可以工作,因为 我第一次运行命令时,我的 Cleints Wildcard.cer 文件错误,我收到一条消息,说私钥与提供的任何证书都不匹配。 然后我将正确的文件添加到 opensll 命令中,它生成得很好。如果我这样做不正确,或者如果有一种方法可以测试 .pfx 文件以验证它是否正常工作,请发送给我或链接或让我知道我遗漏了什么。


回答1
jave 相关推荐