当前位置: 首页 > news >正文

建设局工程网站wordpress吾爱破解版

建设局工程网站,wordpress吾爱破解版,重庆建网站价格,网站生成app要多少钱苹果服务端通知v2处理 关键词: App Store Server Notifications V2、Python源码、苹果订阅、JWS、x5c、JSON WEB TOKEN 背景 最近要接入苹果订阅功能#xff0c;调研后发现订阅生命周期内的状态变更是通过苹果服务端通知返回的(什么时候普通内购也能加上减少掉单的概率)调研后发现订阅生命周期内的状态变更是通过苹果服务端通知返回的(什么时候普通内购也能加上减少掉单的概率) 其回调的正确性验证是依靠回调内容里的几个证书捣鼓这块耗费了好几天时间所以在此记录一下。 JWS 苹果服务端返回的数据格式为JWS之前没处理过这种类型的数据其实本质上还是JWT那一套关于JWS的介绍 参考IETF RFC 7515-JSON Web Signature JWS格式与验证 jws格式为 header.payload.signature 其中每部分都是基于urlbase64加密过的需要使用urlbase64解密得到内容。 其中header最为关键其内容为 {alg: ES256,x5c: [服务器证书,中间证书,根证书] }alg为本次回调的签名算法ES256代表为 ECDSA using SHA-256 hash algorithm x5c则为证书链其内部的第一个证书为验证本次回调签名所使用需要先将证书转为X509格式再从其中解析出公钥使用公钥对数据进行验签 payload部分就是本次通知的业务数据此处不做过多描述参考官方文档 signature则是本次签名的结果。 简单的来说就是该格式包含了详细数据、证书链、签名算法、签名结果。 需要我们在本地完成数据的正确性和合法性 合法性验证证书链是可信的。正确性使用证书链中的服务器证书内的公钥验证数据和签名是正确未经过篡改的。 验证思路 x5c证书链的验证 这块参考了下图 也就是说证书链内有三个证书分别是服务器证书、中间证书、根证书。 其验证顺序是 使用中间证书验证服务器证书使用根证书验证中间证书使用根证书验证中间证书 那么根证书本身呢 则需要用苹果官方的提供的根证书进行验证。如果整个验证流程下来都验证成功了那么整个证书链就是可信的了。 其中苹果官方提供的根证书为AppleRootCA-G3.cer需要自己从官网下载下载地址 Python对证书的验证主要使用了openssl.crypto包下面的X509Store和X509StoreContext 其基本思路为 将可信证书(一般为root证书)先加载至X509Store实例内然后使用X509StoreContext对待验证证书进行verify_certificate验证单个证书验证如此对于一个证书链优先将待验证的证书验证完毕后加入到X509Store实例内然后再继续验证后一个即可以此类推。 python实现代码如下 from OpenSSL import crypto def verify_apple_jws_cert_chain(x5c):验证苹果server notify的证书链x5c:[服务器证书,中间证书,根证书]我们验证顺序: 苹果根证书-x5c根证书, x5c根证书-中间证书, 中间证书-服务器证书:param x5c::return:if not x5c or not isinstance(x5c, list):return x5c type error# 加载x5c证书转为X509证书格式x5c_cert []try:for each in x5c:cert -----BEGIN CERTIFICATE-----\n each \n-----END CERTIFICATE-----new_cert crypto.load_certificate(crypto.FILETYPE_PEM, cert)x5c_cert.append(new_cert)except Exception as e:return x5c certification load exception {}.format(e)# 加载苹果根证书cert_file open(./AppleRootCA-G3.cer, rb)apple_root_cert crypto.load_certificate(crypto.FILETYPE_ASN1, cert_file.read())cert_file.close()# 接下来验证证书链验证失败会报错:OpenSSL.crypto.X509StoreContextError: unable to get local issuer certificate# 首先验证x5c内的根证书store crypto.X509Store()store.add_cert(apple_root_cert)try:store_ctx crypto.X509StoreContext(store, x5c_cert[2])store_ctx.verify_certificate()except Exception as e:return verify root certification exception {}.format(e)# 接下来验证x5c内的中间证书store.add_cert(x5c_cert[2])try:store_ctx crypto.X509StoreContext(store, x5c_cert[1])store_ctx.verify_certificate()except Exception as e:return verify mid certification exception {}.format(e)# 最后验证服务器证书store.add_cert(x5c_cert[1])try:store_ctx crypto.X509StoreContext(store, x5c_cert[0])store_ctx.verify_certificate()except Exception as e:return verify server certification exception {}.format(e)# 最终验证成功return JWS的签名验证 验证完证书链后那么签名的验证就好说了目前的 jwt库 基本上都支持ES256签名了 不过我们需要先从x5c内获取服务器证书将其转为X509对象后获取其中的公钥并使用公钥来验签基本代码如下 import jwt from OpenSSL import crypto# 获取服务器证书 alg header.get(alg) x5c header.get(x5c) server_cert x5c[0] # 将服务器证书转为X509证书对象 cert -----BEGIN CERTIFICATE-----\n server_cert \n-----END CERTIFICATE----- server_cert crypto.load_certificate(crypto.FILETYPE_PEM, cert) # 从证书内解析出公钥 public_key crypto.dump_publickey(crypto.FILETYPE_PEM, server_cert.get_pubkey()).decode(utf-8) # 使用公钥对整个jws进行验签 decode_jws jwt.decode(jws, public_key, algorithms[alg])完整的代码和单元测试用例我放在我的github 上了 如果你觉得对你有帮助希望帮忙点个star。 参考 StoreKit2【附源码】JWS X.509证书链验证 JWS-X.509 Certificate Chain
http://www.hkea.cn/news/14441005/

相关文章:

  • 芜湖市建设工程质量监督站官方网站选择好的佛山网站建设
  • 网站 后台 设计wordpress不要的代码注释掉
  • 做网站被骗首付款怎么报案微信开发小程序开发工具下载
  • 商务网站要怎么做wordpress数据多大后慢
  • 大连承接网站制作wordpress 返回列表
  • 为什么买的网站模版不好用平台网站开发方案
  • 重复打开同一个网站怎么做怎么写公司网站的文案
  • 南充市住房和城乡建设厅网站网站开发薪水一般多少钱
  • 2021智慧树互联网与营销创新合肥seo外包平台
  • 河源做网站的客户中国品牌vi设计公司
  • 网站设计的公司叫什么新电商运营与推广
  • 怎么查网站备案域名备案免费建设个人网站
  • 福建省住建厅网站官网网站微信推广怎么做
  • php网站视频代码榆林高端网站建设如何设计
  • 记事本网站开发网络公司是什么公司
  • 网站seo怎么优化wordpress模板如何管理
  • 杭州建设网站 网站建设怎样才能做一个手机网站
  • 外贸网站搭建公众号开发工具有哪几种
  • 兰州 网站制作googleseo排名公司
  • 有没有做校园文化的网站推广网站优化seo教程上排名
  • 东莞网站建设制作服务嘉兴关键词优化服务
  • 整站seo优化网址导航怎么卸载不掉
  • 网站提交入口汇总口碑营销图片
  • 自己做网站怎么租服务器汕头网站建设制作公司
  • 两题一做的网站电商可以从事的行业有哪些
  • 做招聘网站还有法盈利吗动漫设计与制作就业前景怎么样
  • 网站建设费怎么写会计科目WordPress积分打赏插件制作
  • wordpress 评论 顺序兰州网站seo费用
  • 网站建设工作总结培训企业网站建设案例有哪些公司
  • 免费个人二级域名网站科技感强的网站