这两天项目比较紧但是还没有到我这边来,看着大家忙,心里有点方.....于是决定写点东西方便后面自己的测试。我觉得一个好的测试人员要能够收放自如。放:测试大多数写的是调用脚本,已经很熟了。收:接受请求。所以觉得写个支付通道的MockServer来收下.
耗两天终于搞定了,可以有时间来整理整理这两天遇到的一些问题了。希望以后类似的问题都能够快速的搞定。。因为系统和支付系统交付都是基于https协议,双向认证的。所以主要遇到的问题主要是证书的生成和加密和解密过程遇到的。
前提需要了解的一些知识,之前因为不太了解遇到了很多问题 花费了一些时间,甚至中途有不搞了的想法。静心下来,把每个不清晰的地方尽力去搞清楚就可以了。其实往往在你最困惑的时候也许就是距离成功最近的时候了。好了 话不多说。开搞。
一、前提:
你需要了解的数字证书
证书的类型:本次用到的证书类型:JKS, PKCS12。
PKCS#12:是公钥加密标准,它规定了可包含所有私钥、公钥和证书其以二进制格式存储,也称为 PFX 文件,在windows中可以直接导入到密钥区。生成的证书后缀一般为.pfx.由于可以再windows中直接导入,一般用于客户方也就是商户证书。
JKS(Java Key Store):Provider是SUN,在每个版本的JDK中都有。后缀一般是.jks或者.keystore或.truststore等
证书的编码格式:Base64 、二进制
证书中包含的内容:公钥或私钥
公钥和私钥之间的作用:
二 、数据准备
证书
客户(商户)调用方:客户调用方需要自己的私钥证书(client1.pfx)和服务方的公钥证书(server2.cer)
MockServer方: 服务方需要自己的私钥证书(server1.keystore)和客户方的公钥证书(client1.cer)
采用jdk自带的keytool生成对应的证书参考:(http://www.cnblogs.com/zhangzb/p/5200418.html 、http://www.cnblogs.com/benwu/articles/4891758.html)
生成服务器证书:
keytool -genkey -alias server 1 -keypass 123456 -keyalg RSA -keystore D:\mycer\server1.keystore -storepass 123456
-----*备注:-keypass 123456 访问私钥的密码 -storepass 123456 访问容器的密码
导出服务器的公钥证书:(Base64)
keytool -export -alias server1 -keystore D:\mycer\server1.keystore -file D:\mycer\server2.cer -rfc -storepass 123456
-----*备注: keystore.jks 也可以为 .keystore格式 ; server.crt也可以为 .cer格式"-rfc" 表示以base64输出文件,否则以二进制输出。