我想build立一个反向代理的nginx背后的Synapse实例。 由于nginx是使用HTTPS的TLS设置的,所以这个有些过时的blogpostbuild议使用nginx vhost中已经使用的TLS东西来设置matrix突触,因为这是其他服务器在与我的实例交谈时将看到的TLS内容。
到目前为止,我已经成功地设置了服务器,以便它自己运行,并且此实例上的用户可以相互交谈。 主要的问题是服务器 – 2 – 服务器通信,或者像matrix家伙称之为“联邦”。
这是我在matrix突触中的TLS设置:
tls_certificate_path: "/var/lib/acme/live/matrix.simonszu.de/fullchain" # PEM encoded private key for TLS tls_private_key_path: "/etc/matrix-synapse/homeserver.tls.key" # PEM dh parameters for ephemeral keys tls_dh_params_path: "/etc/ssl/dhparams/matrix.simonszu.de_dhparams.pem" # Don't bind to the https port no_tls: True
上面的tls_private_key_path表明,你可以完全注释掉tls_private_key_path ,因为你已经把no_tls设置为True(因为每个TLS的东西都是由nginx实例pipe理的)。 我已经注意到,这并不是真正的工作,因为在这种情况下,matrix突触将在隐蔽的地方search密钥文件。 由于密钥pipe理是通过acmetool从Let's Encrypt获取证书来完成的,并且如果对密钥文件设置了除0600之外的其他任何文件权限,则自动续订过程将失败,因此我无法链接到与证书关联的密钥文件。 但是由于TLS的东西无论如何都由nginx来pipe理,所以synapse只需要这个证书用于其他突触实例的指纹显示,并且有效地忽略了key_path。
我已经确定这个突触实例可以通过浏览器访问,并且可以手动获取签名。 但不幸的是,与其他实例进行通信时的初始握手失败。
我有自己的突触实例(不是在一个反向代理后面)访问另一个主机,我可以在握手过程中查看它的日志文件。 我的日志文件中出现以下错误: SynapseError: 401: No key for matrix.simonszu.de with id ['ed25519:a_LiWb'] 。
进一步的谷歌search引导我一个名为matrixtool的工具,可以通过cpan App::MatrixTool安装,所以我可以通过命令行检查联邦通信。 结果也是一个暗示,让我想到我的TLS设置仍然有问题:
$ matrixtool server-key matrix.simonszu.de [INFO] Connected to 5.189.143.28:443 [FAIL] TLS fingerprint does not match any listed [OK] Verified using origin=matrix.simonszu.de key_id=ed25519:a_LiWb v2 keys from matrix.simonszu.de: Key id ed25519:a_LiWb base64::VF2Cxq3wVEe8NIplwnHK+yKIhdBkgBmzqUfT1k0aMgg [INFO] Matches cached key
所以,我实际上已经没有想法了。 在所有的研究过程中,我意识到我不是唯一有这个问题的人,但其他用户的主要解决scheme就是放弃,创build一个没有反向代理的matrix – 突触安装。 于是我去了,在这里写下这个问题,一次又一次地说清楚:你如何正确设置TLS启用的反向代理背后的matrix突触?