zoukankan      html  css  js  c++  java
  • 调用微信红包接口,本地可以服务器不可以。 请求被中止: 未能创建 SSL/TLS 安全通道

    微信红包的地址接口地址是:

    https://api.mch.weixin.qq.com/pay/micropay

    当时造成这个不能用的原因是:我把服务器从windows server 2008升级到windows server2019

    搞这个问题,搞了我好久,真他妈的是。

    网上各种说的比如 在前面加一个 

    ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
                                           | SecurityProtocolType.Tls
                                           | SecurityProtocolType.Tls11
                                           | SecurityProtocolType.Tls12;

    或者什么
       ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;   //协议按需选择,不行就都试一遍
    都没用。试了都没用。

    然后那什么将证书导入到 个人 里面,然后给证书赋值权限,然后用最下面这个代码去找证书也没用

    //X509Store certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
    //certStore.Open(OpenFlags.ReadOnly);
    //X509Certificate2Collection certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, "证书指纹", false);
    //request.ClientCertificates.Add(certCollection[0]);

    根据一大通搜索,以上那么多方法无非就是指定 ssl 协议版本,这个需要看微信支持哪些协议版本

    打开下面这个连接查一下微信那个红包接口一查,就知道对方  1.0  1.1  1.2 三个版本,所以只要指定任意一个,按道理就没错。

    https://myssl.com/api.mch.weixin.qq.com?domain=api.mch.weixin.qq.com&port=443

     

     上次上线正常 运行的代码就是这么加载证书的,只要给他证书文件的路径和证书密码就可以,不需要导入到系统

    X509Certificate2 cert = new X509Certificate2(WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);
    request.ClientCertificates.Add(cert);

    然后各种在群里提问,终于找到答案:IIS进程池里面有一个开关”加载用户配置文件“要改为true,如图:

     这真的是一个悲伤的故事,浪费了我一天半的时间,各种调代码上线测试。。。。。

    不知道为什么我本地win10是新安装的系统,和服务器windows server2019也是新安装的系统,不知道为什么默认的IIS版本都是10.0,为什么服务器上进程池创建出来默认就是false而本地是IIS创建进程池以后竟然是true。

    所以以后,大家碰到这个问题,不要乱各种百度。

    一步步确认问题在哪里:

    1、确认对方https协议支持的版本,上 https://myssl.com/ 输入它的域名地址就可以。

    2、.net 写代码的时候,按它支持的协议指定版本就可以。

    3、证书放到某个路径,证书密码确保正确。(可能还要把证书设置为everyone可读)

    按上面3点保证,写出来的代码,如果还报 请求被中止: 未能创建 SSL/TLS 安全通道  ,如果你用的是IIS部署,就去检查进程池是否允许加载用户配置文件吧

  • 相关阅读:
    行转列函数listagg() WITHIN GROUP ()
    位图索引
    windows 杀掉进程
    vue 实践(过滤器)
    vue 总结
    vue v-show v-if 的使用
    vue v-for 绑定数据
    vue v-model实现数据的双向绑定
    vue .stop .self .capture .prevent 阻止冒泡
    vue v-on v-text 的运用
  • 原文地址:https://www.cnblogs.com/Jerseyblog/p/13534998.html
Copyright © 2011-2022 走看看