我们在调用API时,会涉及到证书问题,这个是最麻烦的,他会将我们请求的数据进行各种加密,这个加密过程中往往加了时间戳、加密证书和公钥证书等一些数据在里面,还有加密的顺序等等,更恶心的还会将加密前的数据进行一次或多次加密,要多猥琐就有多猥琐,最终的请求中还使用了前面证书对数据进行签名,数据即使被别有用心的人拿到了,他不知道加密的顺序和加密的方法,还有证书的话,即使拿到了也没有用。

先跟大家讲解一下这个证书

证书一般来说有两个,一个是签名证书sign.pfx,另一个是加密证书enc.cer,看后缀就可分别

一般来说,这两个证书都是提供API接口的公司给的,签名证书是我们自己的,这个签名证书是根据我们这边的数据生成的

签名证书都有一个密码,这个密码是我们从ie中导出时设置的,或者是对方直接给的我们。

签名证书
        得到证书的路径和密码,通过这两个值来得到
列:
    p12 = crypto.load_pkcs12(open(sign_cert_file_path, 'rb').read(), pwd)    读取证书路径及密码
    p12.get_certificate()  # (signed) certificate object  声明证书对象
    p12.get_privatekey()  # private key.       声明私钥
    p12.get_ca_certificates()  # ca chain.     声明证书为中国证书
    return p12                                 将这个对象返回
 
有这个对象后
可以得到
   证书ID:str(sign_cert.get_certificate().get_serial_number())  这个值一定要强转为str类型,不转的话最后面会多个L
   私钥    p12.get_privatekey()

加密证书
   读取加密证书
  with open(encrypt_cert_file_path, 'rb') as f:
        public = f.read()   
        try:
            cert = load_pem_x509_certificate(public, backend=default_backend())  load_der_x509_certificate生成公钥私钥对
            return cert

返回的这个值可以得到:
   公钥:
     cert.public_key()
   证书ID:
     str(cert.serial_number)

等等一系列参数

每个证书都有唯一的ID

调用API中关联的证书问题相关推荐

  1. 12月14日:跟着猫叔写代码api中的增删改查

    首先在数据库中建立一个学生成绩信息表 DROP TABLE IF EXISTS `bro_ceshiapi`; CREATE TABLE `bro_ceshiapi` (`id` int(11) un ...

  2. C/C++中调用api设置mysql连接的编码方式

    MySQL在C/C++中调用api设置连接mysql的编码方式有以下几种方法: 1. mysqli_set_charset 调用示例: [cpp] view plain copy ret = mysq ...

  3. [小白向]Python使用request库调用API并获取返回的JSON数据包中的内容

    目录 对于参数可以直接写入链接中的接口(适用于参数较少时) 对于参数需要使用字典进行携带的接口(适用于请求头中参数较多时) 本文介绍了使用GET的方式调用API的方式,如需要使用POST方式,将代码中 ...

  4. python中调用API的几种方式

    python中调用API的几种方式: urllib2 httplib2 pycurl requests urllib2 import urllib2, urllib github_url ='http ...

  5. Android中调用API实现查询身份证信息

    要实现这个功能,首先就要知道如何通过Http协议访问网络,向网络发送请求,其次了解如何解析JSON或者XML文件. 1.我的身份证查询接口是在聚合数据申请的,完成认证后,你会得到一个KEY,这在之后会 ...

  6. E5 调用API续订服务:Microsoft 365 E5 Renew X

    Microsoft 365 E5 Renew X Microsoft 365 E5 Renew X是一款网页版的E5续订服务,其依赖网页浏览器呈现支持用户多端操作,完全将E5账户API调用托管在了服务 ...

  7. Java Persistence API中的FetchType LAZY和EAGER之间的区别?

    我是Java Persistence API和Hibernate的新手. Java Persistence API中的FetchType.LAZY和FetchType.EAGER什么区别? #1楼 我 ...

  8. [转]c#调用API截图

    转自http://blog.csdn.net/hailiannanhai/article/details/6281471 要想完成这个功能,首先要了解一下在C#中如何调用API(应用程序接口)函数.虽 ...

  9. api中重载函数的原理_小心重载API方法

    api中重载函数的原理 重载方法是API设计中的一个重要概念,尤其是当您的API是流利的API或DSL( 特定于域的语言 )时. 对于jOOQ就是这种情况,在这种情况下,您经常想使用与完全相同的方法名 ...

最新文章

  1. Module ‘celery‘ has no attribute ‘celery‘问题
  2. 11年架构AI技术江湖,李彦宏:1块钱还是100亿,都会投进技术里
  3. xpath的数据和节点类型以及XPath中节点匹配的基本方法
  4. filebeat Template 报错(安装的时候遇到错误了用这个方法解决的)
  5. Unity 3D网络游戏实战 pdf
  6. vue获取本地php数据,Vue-cli项目获取本地json文件数据的实例
  7. 64测试cpu稳定性_SuperPI-圆周率计算与CPU性能与稳定性测试
  8. 拒绝职场危机,程序员最核心的竞争力是什么?
  9. 神秘的中国超级计算机:比肩高铁的世界级领先
  10. Java网络编程——Socket
  11. 快速将 gif 图转成 jpg 图片
  12. LightOJ1220 —— 质因数分解
  13. 车牌识别、证件识别、汽车VIN识别在汽车服务门店中的实际应用
  14. linux下载ccle数据,对CCLE数据库可以做的分析--转载
  15. 小米路由器3G建站折腾笔记6 - 总结
  16. 农历php,PHP阴历转农历的实现代码
  17. 2011考研数学二第(11)题——第一类曲线积分球弧长
  18. 上市早不如巧,深度剖析嘉楠“两个第一”的内涵
  19. P2465 [SDOI2008]山贼集团 dp
  20. 微软云计算的六大优势

热门文章

  1. E-learning课件制作总结
  2. 良精cms php版漏洞,南方数据、良精系统、网软天下漏洞利用
  3. 自己动手实现DNS协议
  4. typora引用HTML自动隐藏了,typora的一些使用
  5. 了解常见 SQL 查询优化技巧
  6. Android富文本开发,从0到1!
  7. sota和fota区别_OTA还分FOTA和SOTA?前者才是真的“智能汽车”
  8. 2022年windows10系统官方下载安装教程
  9. 园区网络安全设计——核心层
  10. 医学类职业适应性测试题用哪个软件,职业适应性测试题库 性格职业适应性测试.doc...