1

所以我正在研究 matrix.org synapse homeserver 并尝试联合。

我得到了我的家庭服务器的证书。它里面有 3 个文件 chain.crt(binary)、server.crt(non-binary) 和 server.key(non-binary)。

server.crt 具有开始证书, server.key 具有私钥。我正在使用 Nginx 网络服务器反向代理我的家庭服务器,并且在 Nginx 的配置中,我已将 SSl 证书指向 server.crt,将 SSl 密钥指向 server.key。

我在https://federationtester.matrix.org/中遇到的问题是它显示 x509: certificate signed by unknown authority。

我是否还需要在某些地方包含chain.crt(二进制文件)?

4

2 回答 2

1

在 TLS 配置中包含中间证书通常是一种很好的做法。但是证书通常应该正确验证,因为客户通常在他们的存储中也有各种中间证书,并且可以以这种方式构建链。

您的证书是否由公共 CA 签名?Synapse 需要这样的证书,因为有几个版本。默认证书可能是自签名证书,除非您将内置 ACME 客户端配置为从 Let's Encrypt 检索一个。

检查它的一种方法是在浏览器中打开联合 URL 并查看它是否引发验证错误。

于 2019-11-20T16:23:40.940 回答
0

nginx想要服务器(叶)证书链(中间)证书,两者都是 PEM 格式(你称之为非二进制)在同一个文件中,但你所说的二进制几乎肯定是很多软件所说的 DER(这是 X.509 使用的 ASN.1 的特定二进制编码)。如果您有可用的 OpenSSL(或获取它),请使用

openssl x509 -in chain.binary -inform der -out chain.pem

然后追加chain.pemserver.crt; 或者你可以一步一步做到这一点

openssl x509 -in chain.binary -inform der >>server.crt

如果这不起作用,则您的 chain.crt可能更奇怪,例如二进制/DER 中的 PKCS7/CMS。发布一个十六进制转储,或者在 pastebin 之类的地方提供确切的文件。

如果您没有/获得 OpenSSL,则可以根据您的环境使用其他工具。指定您的操作系统和存在的任何主要工具,例如 Java。

于 2019-11-20T19:25:41.357 回答