我正在尝试使用带有客户端证书的SSL连接到PostgreSQL数据库的C#应用程序和与PGAdmin UI功能相似的密钥文件,但NPGSQL中的文档缺乏,我找不到任何示例。 documentation表示它“就像.NET的SSLStream一样工作”,但我没有看到两者之间有任何关联。有没有人使用这种方法创建连接,可能会提供一些帮助?
答案 0 :(得分:2)
我正面临着同样的情况。文档当然肯定需要明确说明如何在需要时向连接字符串或连接生成器提供证书,密钥和CA文件,以及ProvideClientCertificatesCallback如何实际提供证书,密钥和CA文件。
2018年11月:我获得了以下示例代码,可用于自签名证书:
var connection = new NpgsqlConnection(connectionStringBuilder.ConnectionString);
connection.ProvideClientCertificatesCallback += clientCerts => this.GetMyClientCertificates(clientCerts);
private void GetMyClientCertificates(X509CertificateCollection clientCerts)
{
clientCerts.Add(<supply an instance of X509Certificate2 here>);
}
答案 1 :(得分:1)
您需要在连接流中使用SSL=true
,然后在打开它之前在NpgsqlConnection上提供ProvideClientCertificatesCallback
(如SSLStream)。