【问题标题】:Confusion between signed certificate and error:- x509: certificate signed by unknown authority签名证书和错误之间的混淆:- x509:证书由未知机构签名
【发布时间】:2020-03-16 10:15:42
【问题描述】:

所以我正在研究 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(二进制文件)?

【问题讨论】:

    标签: ssl openssl ssl-certificate pem matrix-synapse


    【解决方案1】:

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

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

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

    【讨论】:

    • 证书由公共 CA thawte 签名。我没有使用内置 ACME,因为我从 CA 获得了证书。
    • chain.crt 是中间证书,如果是中间证书,那么如何将它包含在 nginx 网络服务器中?
    • 只有浏览器在其存储中具有中间证书。几乎所有其他内容都需要设置正确的链证书。
    • 它现在可以工作了。我使用 whatsmychaincert.com 网站获取链证书并附加它。谢谢 lub 和 Tulir
    • @ShreyasPandey 感谢您推荐该网站!几天来,我一直在设置我的 Matrix 服务器(Construct 而不是 Synapse)。
    【解决方案2】:

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

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

    然后将chain.pem附加到server.crt的末尾;或者您可以一步完成

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

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

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

    【讨论】:

    • 感谢戴夫的帮助!所以我使用whatsmychaincert.com这个站点来获取链证书,然后将它附加到 server.crt 的末尾并且它起作用了。据我所知,linux 会从下到上读取 server.crt 文件。那么这是否意味着 server.crt 以前的内容是中间的,而我获得的链证书是根证书?如果不是,那么哪个是根证书,哪个是中间证书或最终证书?
    • 'Linux' 根本不读取证书文件; Linux 和其他系统(如 nginx)上的一些程序可以,但我不知道 any (任何地方)会显示“从下到上”——你从哪里得到的?在将 nginx 提供给 OpenSSL 之前,我必须查看它是否进行了任何预处理,但如果你首先有 server=leaf=End-Entity 和 chain=intermediate 其次是最安全的;你根本不需要root。 (SSL/TLS 服务器永远不需要发送 root,因为客户端总是必须已经拥有它,尽管有些确实发送它是不必要的,因为它方便且允许。)
    猜你喜欢
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2021-02-01
    • 2016-03-20
    • 1970-01-01
    • 2023-01-09
    • 2020-05-27
    相关资源
    最近更新 更多