You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 3.1集成Stripe支付在CentOS7生产环境SSL连接失败求助

解决CentOS7上Stripe支付SSL连接失败问题

问题概述

本地正常运行的Stripe支付功能,部署到CentOS7生产服务器后报错:The SSL connection could not be established, see inner exception,堆栈跟踪指向SSL握手失败。已尝试dotnet证书命令、更新Nginx SSL证书、切换HTTP/HTTPS,均无效。

排查与解决步骤

1. 更新系统根证书

CentOS7默认的ca-certificates包版本较旧,可能无法验证Stripe的最新SSL证书。执行以下命令更新:

yum update ca-certificates -y

更新完成后重启你的.NET应用服务。

2. 强制启用TLS 1.2/1.3

CentOS7上的.NET运行时可能默认未启用高版本TLS,而Stripe要求使用TLS 1.2及以上版本。在支付方法的开头或者应用启动逻辑中添加:

// 强制使用TLS 1.2和1.3
System.Net.ServicePointManager.SecurityProtocol = 
    System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls13;

3. 测试服务器到Stripe API的连通性

用curl直接测试服务器能否正常访问Stripe API,排除网络或系统级SSL问题:

curl -v https://api.stripe.com/v1/charges
  • 如果返回SSL相关错误:说明系统根证书仍有问题,需重新检查证书更新。
  • 如果返回权限错误(如401 Unauthorized):说明网络和SSL基础连通性正常,问题出在应用配置。

4. 自定义Stripe客户端的SSL配置

如果上述步骤无效,尝试为Stripe SDK配置自定义HttpClient,明确指定SSL协议和证书验证逻辑:

var httpHandler = new HttpClientHandler
{
    SslProtocols = System.Security.Authentication.SslProtocols.Tls12 | System.Security.Authentication.SslProtocols.Tls13,
    // 生产环境保留默认验证,仅排查时可临时跳过(不建议)
    // ServerCertificateCustomValidationCallback = (sender, cert, chain, errors) => true
};

var httpClient = new HttpClient(httpHandler);
var chargeService = new Stripe.ChargeService(httpClient);
// 后续使用chargeService.Create(...)

5. 检查防火墙与代理设置

确认服务器防火墙或云安全组允许出站访问api.stripe.com的443端口。用telnet测试端口连通性:

telnet api.stripe.com 443

如果连接失败,需调整防火墙规则或代理配置,开放对应端口。

内容的提问来源于stack exchange,提问作者Hamid Raza Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:25:22