Kestrel SNI证书选择配置:YARP网关多域名证书适配
YARP网关多域名证书分离配置方案
以下是符合你需求的Kestrel完整配置,通过SNI实现不同域名使用对应证书:
"Kestrel": { "Endpoints": { "Http": { "Url": "http://+:80" }, "Https": { "Url": "https://+:443", "ServerOptions": { "SslProtocols": "Tls12,Tls13", "Certificates": { "Default": { "Path": "/tls/bundle.crt", "KeyPath": "/tls/cert.key" }, "Sni": { "site-b.com": { "Path": "/tls/b-bundle.crt", "KeyPath": "/tls/b-cert.key" } } } } } } }
配置说明
- Http端点:保留原有80端口监听配置,配合
app.UseHttpsRedirection()完成HTTP到HTTPS的自动重定向。 - Https端点:监听443端口,通过SNI机制实现证书按需匹配:
Default证书:作为兜底配置,处理所有*.site-a.com及其子域名的HTTPS请求,沿用你原有的证书文件。Sni节点:针对site-b.com单独配置对应证书,当请求的域名匹配site-b.com时,自动使用该证书建立SSL连接。
注意事项
- 确认证书文件路径正确,确保Kestrel进程拥有
/tls/目录下所有证书文件的读取权限。 - 检查
b-bundle.crt的域名覆盖范围:如果需要支持site-b.com的子域名,需确保证书包含对应的SAN(Subject Alternative Name)字段。 - 保持
app.UseHttpsRedirection()中间件的配置不变,无需额外修改重定向逻辑。
内容的提问来源于stack exchange,提问作者Parsa99
相关产品推荐
相关产品推荐

