我正在尝试使用ServiceStack.Redis通过SSL证书连接到一个基于云的Redis实例。ServiceStack文档提供了关于如何使用SSL连接到基于Azure的Redis的信息,但没有关于如何连接到非Azure Redis实例的信息或示例。
我有一个pem、crt和key文件,但我似乎没有对它们做任何实际的传递给服务。我已经在连接字符串中设置了ssl=true&sslprotocols=tls12,这似乎是第一步,但除此之外,我不确定应该做什么才能正确地传递证书进行验证
编辑:当前代码
RedisConfig.CertificateSelectionCallback = BuildCertificateSelectionCallback;
RedisConfig.CertificateValidationCallback = Config_CertificateValidation;
var hosts = redCon.Split(',');
var sentinel = new RedisSentinel(hosts, masterName)
{
RedisManagerFactory = CreateRedisManager,
.....
};
container.Register(c => sentinel.Start());
private static X509Certificate BuildCertificateSelectionCallback(object sender,string targetHost,X509CertificateCollection, X509Certificate remoteCertificate, string[] acceptableIssuers)
{
return new X509Certificate(@"[filepath]\rl.pfx");
}
private static bool Config_CertificateValidation(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
//Validation not fully fleshed out yet
if(sslPolicyErrors == SslPolicyErrors.None;)
{
return true;
}
return false;
}发布于 2021-01-15 09:20:52
ServiceStack.Redis使用.NET的SslStream建立其SSL连接,您可以在其中配置其RemoteCertificateValidationCallback以验证是否接受指定的证书进行身份验证:
RedisConfig.CertificateValidationCallback = (object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors) => {
//...
};和一个LocalCertificateSelectionCallback,用于选择用于身份验证的本地SSL证书:
RedisConfig.CertificateSelectionCallback = (object sender,
string targetHost,
X509CertificateCollection localCertificates,
X509Certificate remoteCertificate,
string[] acceptableIssuers) => {
//...
}https://stackoverflow.com/questions/65726745
复制相似问题