微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Actix 服务器在通过 deadpool-postgres 使用 TLS 时无法连接到 Postgres

如何解决Actix 服务器在通过 deadpool-postgres 使用 TLS 时无法连接到 Postgres

我有一个网络应用。我已经在生产中开发了一些基本功能。我已经把它放到了一个实时环境中,一次是在 Heroku 上,后来是在 DigitalOcean 上。在 live 中,连接 Postgres 数据库需要使用 TLS。在我尝试过的所有代码排列中,服务器都可以正确启动,但是任何加载页面的尝试都会导致以下错误thread 'actix-rt:worker:2' panicked at 'Could not create db client from pool: Backend(Error { kind: Tls,cause: Some(Custom { kind: InvalidData,error: WebPKIError(UnkNownIssuer) }) })'

我尝试从 AWS 服务器加载 PEM 文件(在 Heroku 的情况下,它使用 AWS Postgres 实例)、添加 webpki 根、rustls 本机证书,甚至强制验证所有内容的授权方。同样的错误

您可以找到重现此错误代码的最小版本 here错误发生在 src/main.rs:33:47(在 Heroku 上重现)。

该应用中的环境变量是:

  • server_addr=0.0.0.0
  • pg.*=(来自我的数据库实例)
  • use_ssl=true
  • use_rustls_root_store=false
  • add_webpki_roots=false
  • use_custom_cert_resolver=false

我可以打开或关闭最后三个变量(控制 TLS 设置的各个部分)中的任何一个,这没有任何区别。同样的错误信息。与可选的db_ca_cert 相同,可以设置pem 文件名称,也可以不设置。没什么区别。

解决方法

我已经通过将我的应用程序转换为使用 sqlx 解决了这个问题。这在 Heroku 上按预期工作。我还没有尝试过 DigitalOcean,但我希望它也能在那里工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?