Visa-Api对接引发的 外部接口设计及SSL方面的考虑 短命女 2021-09-18 01:26 597阅读 0赞 最近一个项目有幸与Visa公司进行API对接,让自己在 外部 Http API对接方面又有了新的认识,之前通常的对接方式无外乎有如下几种: 1. 对请求参数 a + b + c + d + 时间戳 + 密钥 进行md5 加密,进行消息摘要的校验; 2. 请求参数A(API固有参数+时间戳+密钥+请求体B) md5 消息摘要校验,请求体 B 使用对称、非对称加密 进行加解密获取; 3. (Visa的情况)请求Header 中 加入 Http Basic认证,同时Https请求,并且使用 Two way SSL认证; 关于3中提到的 SSL 双向认证这次我也是第一次接触,单项认证和双向认证可以看: 通常需要一个SSLContext, SSLContext 需要配置一个 TrustManager,如果是双向通信,还需要一个 KeyManager。 * 单行https TrustManager、 * 双向https TrustManager KeyManager * KeyManager 负责提供证书和私钥,证书发给对方服务器端peer,决定将哪一个认证证书发送给对端服务器 * TrustManager 负责验证服务器端 peer 发来的证书,决定对端的认证证书是否被信任 开发调试查看完整SSL调试信息,可增加启动参数 -Djavax.net.debug=all,亲测很有帮助,在服务端返回 非法HttpStatus Code时可以通过调试信息查看具体原因 具体相关内容介绍可参考: 单行认证与双行认证的区别:[https://blog.csdn.net/z69183787/article/details/87253530][https_blog.csdn.net_z69183787_article_details_87253530] Https 认证开发实践(核心):[https://blog.csdn.net/z69183787/article/details/87262585][https_blog.csdn.net_z69183787_article_details_87262585] Visa-Api Reference 讲解 two way ssl(包含证书及密钥仓库jks生成) :[https://blog.csdn.net/z69183787/article/details/87254283][https_blog.csdn.net_z69183787_article_details_87254283] 附上双向认证核心代码: keystore是Java保存密钥对的秘钥仓库,文件后缀为keystore,后缀类似.jks .truststore都是保存秘钥和证书的仓库 .cer:存储公钥证书的文件格式。 .crt:客户端认证的证书、私钥。 双向认证需要服务端和客户端都提供cer格式的证书,然后导入到彼此的keystore中 KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); FileInputStream keystoreInputStream = new FileInputStream(keystorePath); keystore.load(keystoreInputStream, keystorePassword.toCharArray()); keystoreInputStream.close(); SSLContext sslcontext = SSLContexts.custom().useProtocol("TLS") .loadKeyMaterial(keystore, keystorePassword.toCharArray()) .loadTrustMaterial(new File(keystorePath), keystorePassword.toCharArray()) .build(); HostnameVerifier hostnameverifier = null; SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslcontext, null, null, hostnameverifier); CloseableHttpClient httpClient = proxyHostName != null && proxyHostName != "" && proxyPortNumber != 0 ? HttpClients.custom().setSSLSocketFactory(sslSocketFactory).setProxy(new HttpHost(proxyHostName, proxyPortNumber)).build() : HttpClients.custom().setSSLSocketFactory(sslSocketFactory).build(); [https_blog.csdn.net_z69183787_article_details_87253530]: https://blog.csdn.net/z69183787/article/details/87253530 [https_blog.csdn.net_z69183787_article_details_87262585]: https://blog.csdn.net/z69183787/article/details/87262585 [https_blog.csdn.net_z69183787_article_details_87254283]: https://blog.csdn.net/z69183787/article/details/87254283
相关 接口设计考虑点及验证点 于测试人员而言,接口测试是最常见的测试方式之一。 个人认为,做好接口测试的第一步,要从接口设计考虑点出发。知己知彼百战不殆,明白了开发设计接口的原理和注意点,再结合测试... 曾经终败给现在/ 2024年04月20日 10:57/ 0 赞/ 69 阅读
相关 虚拟仪器的外部接口设计 虚拟仪器的外部接口设计需要考虑多个因素。以下是一些可能涉及的方面: 1. 接口类型:根据实际需要,选择不同类型的接口。例如,计算机内部插卡式接口有isa接口和pci接口,适 不念不忘少年蓝@/ 2024年02月05日 13:16/ 0 赞/ 39 阅读
相关 OpenSIPS 管理接口的对接 文章目录 1. 背景 2. OpenSIPS 的 HTTP 管理接口对接 2.1 脚本配置 2.2 请求方式 1. 港控/mmm°/ 2023年10月15日 15:03/ 0 赞/ 58 阅读
相关 JVM GC性能方面的考虑(吞吐量和STW) GC性能方面的考虑 对于GC的性能主要有2个方面的指标:吞吐量throughput(工作时间不算gc的时间占总的时间比)和暂停pause(gc发生时app对外显示的无法响应) 分手后的思念是犯贱/ 2023年10月07日 09:16/ 0 赞/ 12 阅读
相关 设计一个安全的登录接口需要考虑哪些? 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 ![de94a69e2fe73b1e51b800a345362eb5.png][] 前言 谁践踏了优雅/ 2022年08月29日 11:55/ 0 赞/ 273 阅读
相关 接口设计的幂等性考虑 [![96][]][96 1] [南乡清水][96 1] 关注 转载:[https://www.jianshu.com/p/b5205e58b1ca][https_ww 爱被打了一巴掌/ 2022年03月06日 12:12/ 0 赞/ 435 阅读
相关 手工接口测试考虑的点 1、网络正常,数据库连接正常,参数传入正确 预期结果:返回值正确 2、网络正常,数据库连接正常,参数必填校验 预期结果:返回message:对应参数必填提示语 3、网络 刺骨的言语ヽ痛彻心扉/ 2021年12月23日 06:59/ 0 赞/ 280 阅读
相关 职业生涯规划需要考虑哪些方面 [ 1、确定志向。][1]志向是事业[成功][1]的基本前提,没有志向,事业的成功也就无从谈起。俗话说:“[志不立,天下无可成之事。][1]”立志是人生的起跑点,反映着一个人的 快来打我*/ 2021年09月28日 07:58/ 0 赞/ 458 阅读
相关 Visa-Api对接引发的 外部接口设计及SSL方面的考虑 最近一个项目有幸与Visa公司进行API对接,让自己在 外部 Http API对接方面又有了新的认识,之前通常的对接方式无外乎有如下几种: 1. 对请求参数 a + b + 短命女/ 2021年09月18日 01:26/ 0 赞/ 598 阅读