微信开发 服务器安装证书_微信公众平台开发服务器与微信服务器通信时失败 - CSDN
  • 怎样配置服务器,通过https访问服务器。想要通过https访问,就得有ssl证书,这里可以去阿里云购买免费的。 前提 1,已经备案好的域名, 2,服务器(这里我推荐阿里云,...证书服务器 点击购买证书 点击免费型DV SS

           微信公众平台数据传输安全,提高业务安全性,公众平台将不再支持HTTP方式调用。避免影响正常使用中含有HTTP方式调用的服务,请开发者尽快调整,将现有通过HTTP方式调用的切换成HTTPS调用,平台将于2017年12月30日停止对HTTP方式调用的支持。
    接口调用方式切换成HTTPS调用指导建议:
    1.后台程序调用api.weixin.qq.com的接口,采用HTTPS方式,连接端口443,修改方法请自行查询各种编程语言对HTTPS的支持。
    2.HTML页面对api.weixin.qq.com的URL访问,如果是HTTP方式,请直接指定HTTPS方式。
    3.javascript等编程语言对api.weixin.qq.com的URL访问也请从HTTP方式改为HTTPS方式。

        怎样配置信公众平台https服务器,通过https访问服务器。想要通过https访问,就得有ssl证书,这里可以去阿里云购买免费的。

    前提
    1,已经备案好的域名,
    2,服务器(这里我推荐阿里云,后面会说为什么)
    下面是方法步骤
    1,打开阿里云官网,https://www.aliyun.com/
    2,点击安全云盾--》证书服务

    证书服务器

    点击购买证书

    点击免费型DV SSL

    点击补全

    因为是免费的,所以只能添加一个普通域名

    如果你是阿里云的服务,点击复选框,就可以自动添加cname记录,进行域名授权验证

    补全完后会有下载链接

    然后有文档,教你怎样配置
    windows server 2008 r2 tomcat7 server.XML配置

    安装证书
    文件说明:
    1. 证书文件214019722740019.pem,包含两段内容,请不要删除任何一段内容。
    2. 如果是证书系统创建的CSR,还包含:证书私钥文件214019722740019.key。
    ( 1 ) 在Nginx的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为214019722740019.key;
    ( 2 ) 打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,找到:
    # HTTPS server( 3 ) 将其修改为 (以下属性中ssl开头的属性与证书配置有直接关系,其它属性请结合自己的实际情况复制或调整) :
    server {保存退出。
    ( 4 )重启 Nginx。
    ( 5 ) 通过 https 方式访问您的站点,测试站点证书的安装配置。如遇到证书不信任问题
    TIP
    这里需要注意的是服务器的防火墙,要开启443端口例外,
    展开全文
  • 前几天接到通知:因微信支付HTTPS服务器证书的根CA证书将于2018年8月23日到期失效,微信支付计划于2018年5月29日更换服务器证书。新的服务器证书由权威机构(DigiCert) 签发, 如果你的服务器上没有部署DigiCert的根CA...

    前几天接到通知:因微信支付HTTPS服务器证书的根CA证书将于2018年8月23日到期失效,微信支付计划于2018年5月29日更换服务器证书。新的服务器证书由权威机构(DigiCert) 签发, 如果你的服务器上没有部署DigiCert的根CA证书,将导致你的下单、退款等功能无法正常使用。请开发人员务必尽快完成证书验证及安装,详细流程可查看商户平台公告。

    处理如下:

    1、在网上查了一些资料,分析得知一般都系统都是不需要修改什么的、因为一般linux环境内置了该证书什,但是毕竟涉及到支付环节需要谨慎,通过查看微信官网(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=23_4)找到了一些官方的解决方案,分为两种

    方式一:调用微信支付沙箱环境的API接口验证

    方式二:绑定HOST,请求已部署新证书的微信支付API服务器

    在这里我采用的是第一种方式、调用微信支付沙箱环境的API接口验证,在代码中生成微信要求的请求参数拼装成xml,在这里注意只能传递要求的三个参数(mch_idnonce_strsign),多了会报错。当返回结果return_code为“SUCCESS”,说明当前客服端已支持DigCert证书,反之则需要根据安装证书部分的指引,升级证书。

    具体的测试如下:

    输出参数为=======================

    <xml><mch_id>自己的商户号</mch_id><nonce_str>随机字符串</nonce_str><sign>签名</sign></xml>

    返回参数为=======================
    <xml>
      <return_code><![CDATA[SUCCESS]]></return_code>
      <return_msg><![CDATA[ok]]></return_msg>
      <sandbox_signkey><![CDATA[返回签名]]></sandbox_signkey>

    </xml>

    以上参数可以再系统中拼装出来,去除掉多余的参数即可。

    然后再服务器上通过curl命令调用微信沙箱域名

    echo '<xml><mch_id>自己的商户号</mch_id><nonce_str>随机字符串</nonce_str><sign>签名</sign></xml>'|curl -X POST -H 'Content-type:text/xml' -d @- https://apitest.mch.weixin.qq.com/sandboxnew/pay/getsignkey

    返回结果为SUCCESS则为成功,如下图所示。如果没有成功,可以根据微信官网说明的步骤去升级安装证书。

    顺带复习了一下curl 参数的用法

    -H/--header <line>自定义头信息传递给服务器
    -X/--request [GET|POST|PUT|DELETE|…]  使用指定的http method發出 http request
    -H/--header                         设定request里的header
    -i/--include                          展示response的header
    -d/--data                             设定 http parameters
    -v/--verbose                         输出比较多的信息
    -u/--user                             使用者账号、密码

    -b/--cookie                           cookie 

    以上仅为个人理解,转载请注明出处 https://blog.csdn.net/qq_20124743/article/details/79709433



    展开全文
  • 微信支付计划于2018-05-29日更换服务器证书,这个通知已经N次了,一直不想整,没办法,时间快到了,得处理了。今天抽空整了下,写篇 blog 记录下: 首先看: 微信支付HTTPS服务器证书验证指引 ...
    微信支付计划于2018-05-29日更换服务器证书,这个通知已经N次了,一直不想整,没办法,时间快到了,得处理了。今天抽空整了下,写篇 blog 记录下:
    
    	首先看:
    		微信支付HTTPS服务器证书验证指引
    		https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=23_4
    
    	我对服务器不是很了解,对证书这个东西也没了解过。打开上面的这个链接,仔细阅读,大概明白了意思。我的理解是:
    		『
    			微信支付使用HTTPS来保证通信安全,商户与微信支付服务器通信前,要在客户端的操作系统或者执行环境(如JRE等)中部署权威机构的根证书。 商户调用API的过程中,会用根证书来校验微信支付服务器及域名的真实性。
    		』
    
    		我们使用 curl 命令,来请求微信支付 API 时,需要通过 『 同颁发给微信HTTPS服务器的证书 的同一家权威机构』的根证书,来验证我们请求的是不是真实的微信支付服务器及域名!
    
    		所以,我们只需要下载新的根证书,然后部署到我们服务器上。curl 请求的时候,使用该证书即可!
    
    	根据指引,让我们来验证:
    		1.调用微信支付沙箱环境的API接口验证
    			微信支付新的服务器证书,部署在 '沙箱环境',所以,我们来请求沙箱环境即可。
    			『
    				这里,我给出我本次测试的代码
    				特殊说明:
    					我的系统使用的 easywechat,为了验证,我参照按照官方的 demo 里的方法,
    					重新写了个方法,来请求验证
    			』
    
    			/*
    				上方的相关 config 配置自己更换
    			 */
    			<?php
    			        $sandbox_url = 'https://apitest.mch.weixin.qq.com/sandboxnew/pay/getsignkey';
    			        $mch_id = config('easy_wechat.payment.merchant_id');
    			        $key = config('easy_wechat.payment.key');
    			        $cert_path = config('easy_wechat.payment.cert_path');
    			        $key_path = config('easy_wechat.payment.key_path');
    			        $nonce_str = 'pinxuejianyou';
    
    			        $params = [
    			            'mch_id' => $mch_id,
    			            'nonce_str' => $nonce_str,
    			        ];
    
    			        // 签名步骤一:按字典序排序参数
    			        ksort($params);
    			        $params_string = '';
    			        foreach ($params as $k => $v)
    			        {
    			            if($k != 'sign' && $v != '' && !is_array($v)){
    			                $params_string .= $k . '=' . $v . '&';
    			            }
    			        }
    			        $request_params = $params_string = trim($params_string, '&');
    			        // 签名步骤二:在string后加入KEY
    			        $params_string .= '&key=' . $key;
    			        // 签名步骤三:MD5加密
    			        $params_string = md5($params_string);
    			        // 签名步骤四:所有字符转为大写
    			        $sign = strtoupper($params_string);
    
    			        //
    			        /*
    			            微信请求,参数都必须是:
    			                POST 请求
    			                xml 格式
    
    			            本次天真地以为,直接拼接为字符串,发现一直报错!(Mark 下错误)
    			         */
    			        // 最终的请求地址(Mark 下错误)
    			        // $request_url = $sandbox_url . '?' . $request_params . '&sign=' . $sign;
    
    			        // 请求的 xml 参数
    			        $request_xml = <<<EOF
    			<xml>
    			    <mch_id>{$mch_id}</mch_id>
    			    <nonce_str>{$nonce_str}</nonce_str>
    			    <sign>{$sign}</sign>
    			</xml>
    			EOF;
    
    			        // 发送请求
    			        $ch = curl_init();
    
    			        // curl 配置
    			        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    
    			        // 最终的请求地址(Mark 下错误)
    			        // curl_setopt($ch, CURLOPT_URL, $request_url);
    			        curl_setopt($ch, CURLOPT_URL, $sandbox_url);
    			        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
    			        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);//严格校验
    			        // 设置 header
    			        curl_setopt($ch, CURLOPT_HEADER, FALSE);
    			        // 要求结果为字符串且输出到屏幕上
    			        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    			        if(false){
    			            // 设置证书
    			            // 使用证书:cert 与 key 分别属于两个.pem文件
    			            curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
    			            curl_setopt($ch,CURLOPT_SSLCERT, $cert_path);
    			            curl_setopt($ch,CURLOPT_SSLKEYTYPE, 'PEM');
    			            curl_setopt($ch,CURLOPT_SSLKEY, $key_path);
    			        }
    			        // post提交方式
    			        curl_setopt($ch, CURLOPT_POST, TRUE);
    			        curl_setopt($ch, CURLOPT_POSTFIELDS, $request_xml);
    
    			        $result = curl_exec($ch);
    			        // 返回结果
    			        if($result){
    			            curl_close($ch);
    
    			            // 解析结果
    			            libxml_disable_entity_loader(true);
    			            $response = json_decode(json_encode(simplexml_load_string($result, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
    			            dd($response);
    			        } else {
    			            $error = curl_errno($ch);
    			            curl_close($ch);
    			            dd($error);
    			        }
    
    			/*
    				重要!!
    				微信内部提示:
    					『 注意: 需要用跟生产环境相同的操作系统、执行环境、开发语言及程序逻辑进行验证。使用curl命令行工具验证成功,并不代表你的系统支持了新的服务器证书。 』
    			 */
    			意思就是:
    				1.即使你用我上面的方法验证成功了,也不一定百分百说明你的程序系统支持了 『新服务器证书』,还需要确保,你的服务器环境、代码环境,都必须和你线上的环境一模一样。
    				所以,我们其实可以直接在服务器上,使用我上面的方法,来访问下即可。(不用在你项目中的测试环境上访问)
    				2.即使在线上服务器上,访问可以了,我的程序的写法,还需要和你目前系统的微信 curl 请求的写法,基本吻合,不要出现一些 curl 配置不同,可能也不行(概率很小,我的系统用的 easywechat,应该也没事)
    
    		2.绑定HOST,请求已部署新证书的微信支付API服务器
    			vim /etc/hosts,添加
    				#113.96.240.139 		api.mch.weixin.qq.com
    				#157.255.180.139        api.mch.weixin.qq.com
    				#121.51.30.139  		api.mch.weixin.qq.com
    
    			(一般没有问题吧)
    
    	修正指引,引用 『微信支付指引』 里内容:
    		『
    			大部分情况下,验证失败都是由于以下两种情况导致的:
    
    			情况一:程序中指定了根证书,但是指定的根证书中仅包含了微信支付老的根证书。
    
    			情况二:服务器上没有新的根证书。
    
    
    			可通过以下两个方案修正:
    
    			方案一:删除掉指定根证书的。当不指定根证书时,程序默认会使用系统自带的根证书。绝大部分系统内置微信支付的根证书,所以删除掉指定的根证书,不会影响到你的现有业务。
    
    			方案二:更新根证书。往truststore或者根证书信任列表中追加新的根证书
    
    			 
    
    			推荐使用“方案一”来修正,该方案对服务器证书的兼容性更好。原因是:微信支付新的根证书分别在 2025年5月13日、2031年11月10到期。到期后,同样地要更换根证书。使用方案一修复的话,你的系统中很可能已内置了后续微信支付更换时使用的根证书,从而不受影响。如果使用方案二进行修复的话,在2025年5月13日和2031年11月10日,仍可能需安装新的根证书。
    		』
    
    		再解读下:
    			我们在 curl 时,不要设置 curl 的选项,指定一个 '根证书',例如:
    				CURLOPT_CAINFO
    				CURLOPT_CAPATH
    				CURLOPT_SSL_VERIFYPEER
    			这2个配置(除非你的系统,使用了多个不同的 CA 证书,一般应该不会有!),不指定根证书时,程序会默认使用系统的根证书。
    
    	PHP 常见错误,引用 『微信支付指引』 里内容:
    		『
    			cURL error 60: SSL certificate: unable to get local issuer certificate.
    
    			CURLE_SSL_CACERT (60)  peer certificate cannot be authenticated with known CA certificates.
    
    			可能原因: 
    
    			使用libcurl时设置了 CURLOPT_CAINFO。 可以在代码中搜索关键字“CURLOPT_CAINFO”来确认。 
    
    			解决方法:
    
    			方法一、删除掉类似  curl_setopt(pCurl, CURLOPT_CAINFO,  "./rootca.pem");   的代码
    
    			方法二、更新rootca.pem。用libcurl官网最新的https://curl.haxx.se/ca/cacert.pem 替换即可 
    		』
    
    参考文章:
    	微信支付 - 微信支付HTTPS服务器证书验证指引
    		https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=23_4
    	微信支付 - 协议规则
    		https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_1
    	微信支付 - 安全规范(签名算法)
    		https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_3
    	微信支付 - 签名校验工具
    		https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1	
    
    	其他:
    		https://www.easywechat.com/docs/master/zh-CN/troubleshooting
    		https://blog.csdn.net/mazicwong/article/details/54946952
    		https://blog.csdn.net/ecba1988/article/details/39204279
    
    测试时,写验证代码时,注意:
    	1.微信要求的是:POST 提交,数据格式,提交和返回数据都为XML格式,根节点名为xml。
    		我拼接了下 get 和 post 的数据格式,死活不行!
    		(因为,之前一直使用的是 easywechat,或者是官方的 demo 代码,自己没写过,这次踩了一遍才出现问题)
    
    	2.对于程序中出现 'cURL error 60: SSL certificate: unable to get local issuer certificate.' 的错误:
    		1>上面的解决方法是一种
    
    		2>如果不需要证书验证,我们完全可以设置,不进行证书认证:
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_SSL_VERIFYHOST => false,
    

    展开全文
  • 今天在邮箱中看到这样一句话尊敬的微信支付商户: 因微信支付HTTPS服务器证书的根CA证书将于2018年8月23日到期失效,微信支付计划于...请开发人员务必尽快完成证书验证及安装,详细流程可查看商户平台公告。 微信...

    今天在邮箱中看到这样一句话

    尊敬的微信支付商户:
    
    因微信支付HTTPS服务器证书的根CA证书将于2018年8月23日到期失效,微信支付计划于2018年5月29日更换服务器证书。
    新的服务器证书由权威机构(DigiCert) 签发, 如果你的服务器上没有部署DigiCert的根CA证书,将导致你的下单、退款等功能无法正常使用。请开发人员务必尽快完成证书验证及安装,详细流程可查看商户平台公告。
    
    微信支付团队
    2018年3月14日

    所以就立刻检查了下自己的服务器是否部署了DigiCert的根CA证书。(一般服务器上都是部署了类似的根证书的。就像装windows自带IE一样,但是以防万一我看是检查下)

    检查的方式如下

    (1)微信商户找到的自己的mch_id  这个就是商户号 例如mch_id = 1111111

    (2) 生成一个不超过32位的随机字符串 nonce_str, 例如nonce_str = 7UNdMuYryxEtLirA

    (3)然后去这个网址网址链接, 在XML源串贴上这串xml。在商户key一栏写你在商户平台上设置的商户key。 其他的默认不变

    <xml> 
    
    <mch_id>1111111</mch_id> 
    
    <nonce_str>7UNdMuYryxEtLirA</nonce_str> 
    
    </xml>

    (4)这样就获得了sign的值

    (5)然后在你的centos控制台中写入这个回车就可以了。

    echo '<xml><mch_id>1111111</mch_id><nonce_str>7UNdMuYryxEtLirA</nonce_str><sign>4A1CD6111DADC112CE6AFC391C7C4A0F42C6</sign></xml>'|curl -X POST -H 'Content-type:text/xml' -d @- https://apitest.mch.weixin.qq.com/sandboxnew/pay/getsignkey

    (6)如果有根证书,结果如下

      <return_code><![CDATA[SUCCESS]]></return_code>
      <return_msg><![CDATA[ok]]></return_msg>


    注意:教程里的参数需要时你商户的参数。我只是做一个示例,你直接替换该替换的内容就好了,就三个参数mch_id, nonce_str, sign。 其中sign是仅仅是有mch_id和nonce_str这两个参数加密得到的(限于此沙箱的测试环境)。





    展开全文
  • 背景介绍微信支付使用HTTPS来保证通信安全, 在HTTPS服务器上部署了由权威机构签发的证书, 用于证明微信支付平台...因微信支付HTTPS服务器证书的根CA证书将于2018年8月23日到期失效,微信支付计划于2018年5月29日,...
  • 原文:【记】微信支付服务器证书更换通知的验证流程【重要】微信支付服务器证书更换通知,请开发人员验证以免影响交易 尊敬的微信支付商户&amp;服务商:  因微信支付HTTPS服务器证书的根CA证书将于2018年8月23...
  • 微信支付服务器证书更换 微信支付计划于2018年5月29日更换服务器证书。请开发人员尽快进行服务器根证书验证,以免影响正常交易。 但是好像跟PHP没有关系,详情见地址:...
  • 收到了这样的一个通知:微信支付HTTPS服务器证书的根证书将于2018-08-23日到期,微信支付计划于2018-05-29日更换服务器证书。请通知贵司技术开发人员尽快完成相关验证,确保安装新的根证书,以免影响正常交易。详细...
  • 微信支付证书开发

    2020-07-30 23:32:16
    微信支付证书开发,适用于退款等需要双向证书的操作。
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 注意不是商户号中的安全控件和操作...1、技术开发人员在调用微信支付安全级别较高的接口(如:退款、企业红包、企业付款)时,会使用到API证书。 2、API证书是用来证实商户身份的, 证书中包含商户号、证书序列号、...
  • 2.解压 安装apiclient_cert.p12 3.选择本地计算机 4.下一步下一步 密码默认为商户号 5.存储位置选个人 6.打开MMC.exe 或者运行中输入MMC 点击 文件→添加或删除管理单元 →证书 选择计算机账户 下...
  • 微信小程序开发工具报错对应的服务器证书无效
  • 2018年3月8日,微信支付商户平台发布公告:微信支付HTTPS服务器计划于2018年5月29日更换服务器SSL证书,为避免下单、退款等功能无法使用,微信支付要求商户平台开发人员尽快验证商户服务器是否部署了新证书的根CA...
  • 微信公众号开发-服务器配置 最近在进行公司的微信公众号和小程序的开发,由于都是由本人独立研发,所以框架和接口都要自己去搭去写,因此想把相关接口做完之后做一些记录,如今闲来无事就总结下相关接口,本篇内容为...
  • 微信小程序开发之-Https免费证书配置 目录 微信小程序开发之-Https免费证书配置 目录 微信小程序开发必须使用https证书,同时网站必须备案后才可以使用, 免费证书安装 开始部署 配置Nginx启动HTTPS 设置...
  • 服务器URL配置 是微信公众号开发里非常重要的一个步骤。 虽然微信公众平台已经给了我们很多 必要的功能 像:查看用户,查看用户消息,给用户回复消息,自动给用户回复消息,根据用户消息内容回复给用户图文消息等...
  • 微信支付在不校验服务器时是ok的,如果校验的话会报这个错 VM1017:1 https://www.xxxxxxx.com 对应的服务器证书无效。控制台输入 showRequestInfo() 可以获取更详细信息。 域名已经是request合法域名,而且导入了...
  • 在调试微信支付过程中,下载证书并存放在服务器是非常重要的一步,那么如何存放证书,并在微信支付配置类文件里如何书写路径也变了尤为重要了,下面将介绍这两个问题如何解决,刚开始接触微信支付的小伙伴最好是...
1 2 3 4 5 ... 20
收藏数 8,879
精华内容 3,551
关键字:

微信开发 服务器安装证书