Postgresql Npgsql提供客户端证书和密钥
我正在尝试建立到PGSQL服务器的连接,该连接需要客户端证书和密钥才能运行Postgresql Npgsql提供客户端证书和密钥,postgresql,entity-framework,entity-framework-core,npgsql,Postgresql,Entity Framework,Entity Framework Core,Npgsql,我正在尝试建立到PGSQL服务器的连接,该连接需要客户端证书和密钥才能运行 首先,我可以使用SQLGate工作验证与Postgres数据库的连接。提供主机、用户、密码、端口、数据库并标记使用SSL,然后在SSL下提供证书和密钥。如果没有这两个项目,连接将无法运行。由于某种原因,NpgsqlConnectionStringBuilder不包含某种类型的客户机密钥的定义,因此我使用NPGSQL提供了除密钥以外的所有密钥 var connectionString = new NpgsqlConnec
首先,我可以使用SQLGate工作验证与Postgres数据库的连接。提供主机、用户、密码、端口、数据库并标记使用SSL,然后在SSL下提供证书和密钥。如果没有这两个项目,连接将无法运行。由于某种原因,
NpgsqlConnectionStringBuilder
不包含某种类型的客户机密钥的定义,因此我使用NPGSQL提供了除密钥以外的所有密钥
var connectionString = new NpgsqlConnectionStringBuilder();
connectionString.Host = rInfo.Host;
int portNumber = 5432;
int.TryParse(rInfo.Port, out portNumber);
connectionString.Port = portNumber;
connectionString.Database = rInfo.dbName;
connectionString.Username = rInfo.Username;
connectionString.Password = rInfo.Password;
connectionString.SslMode = SslMode.Prefer;
connectionString.TrustServerCertificate = true;
connectionString.ClientCertificate = rInfo.CertFilePath;
//Poke the database, see if we can get in.
try
{
NpgsqlConnection npgsqlConnection = new NpgsqlConnection(connectionString.ToString());
npgsqlConnection.ProvideClientCertificatesCallback += provideCertificates;
npgsqlConnection.UserCertificateValidationCallback += validateCertificates;
npgsqlConnection.Open();
npgsqlConnection.Close();
return connectionString.ToString();
}
例外情况是:
错误28000:连接需要有效的客户端证书
这是意料之中的,因为我没有在任何地方提供钥匙。我尝试通过猜测将密钥添加到连接字符串中:
connectionString.Add(新的KeyValuePair(“客户机密钥”,rInfo.KeyFilePath))代码>
但这还没有被认识到。将其标记为sslkey
,但返回时也无法识别。我最好的猜测是使用providedclientcertificatescallback
回调来提供证书,但我不知道如何让它与密钥配对,因为它只是要求一个X509CertificateCollection
我们之前使用的工具是由Devart提供的,但是我们已经失去了许可证。我们还将连接到一系列数据库(具有相同的模式),而不仅仅是一个数据库
我的选项是什么?您可以放置由PGSSLCERT
和PGSSLKEY
环境变量指定的文件。我们不能。如上所述:我们还将连接到一系列数据库(使用相同的模式),而不仅仅是一个。
不确定您是否已经找到了问题的答案,但看起来是相关的。阅读它意味着此功能的增强即将到来,但是还不可用。您有解决此问题的方法吗?您可以放置由PGSSLCERT
和PGSSLKEY
环境变量指定的文件。我们不能。如上所述:我们还将连接到一系列数据库(使用相同的模式),而不仅仅是一个数据库。
不确定您是否已经找到问题的答案,但看起来像是相关的。阅读它意味着此功能的增强功能即将推出,但尚未可用。您对此问题有解决方案吗?