postgresql - 通过 npgsql 使用 ca 证书连接到 .NET Core 上的 DO Postgres 集群

标签 postgresql .net-core digital-ocean npgsql

我实际上正在使用 DigitalOcean 的 Postgres 集群。设法使用我拥有的凭据通过 DataGrip 连接到服务器,但我在 .NET Core 上面临身份验证问题。显然,您需要使用给定的凭据 + 提供的 ca 证书进行身份验证(DigitalOcean 提供 CA)。

services.AddDbContext<NozomiDbContext>(options =>
                {
                    options.UseNpgsql(mainDb
                        , builder =>
                        {
                            builder.EnableRetryOnFailure();
                            builder.ProvideClientCertificatesCallback(certificates =>
                            {
                                var cert = new X509Certificate2("ca-certificate.crt");
                                certificates.Add(cert);
                            });
                        }
                    );
                    options.EnableSensitiveDataLogging(false);
                    options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
                }, ServiceLifetime.Transient);

之后,运行项目结果:

System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

我做错了什么?如果这还不够,真的很抱歉。

顺便说一句,我在 PG 11.4 上。

最佳答案

您的服务器证书可能是自签名的或由于某种原因无法验证。您可以通过在连接字符串上添加 Trust Server Certificate=true 来告诉 Npgsql 禁用检查服务器证书。

See more in the docs .

关于postgresql - 通过 npgsql 使用 ca 证书连接到 .NET Core 上的 DO Postgres 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57242439/

相关文章:

ubuntu - Varnish digitalocean 配置指南 : Symbol not found: 'req.backend.healthy' (expected type BOOL): 后出错

bash - 使用 SSH key 登录在 Git Bash 上不起作用,但在 Windows 命令提示符中起作用

sql - 枚举 PostgreSQL 类型的大小是多少?

postgresql - 在我的 mac 上进行 postgresql 本地开发时遇到问题

c# - C# 中这个语法是什么

azure - 将计算服务(辅助角色)迁移到 Azure AKS?

sql-server - 使用 SQL Server Management Studio 远程连接到 docker 容器

sql - 查询以删除列中字符串的第一个和第二个连字符之间的所有内容

perl - JOIN 中的附加条件

C# 我可以使用部分类来使代码更具可读性吗