1、找到到安装Tomcat目录带拆下该文带行唤件server.xml,一般默认路径都是在conf文件蠢凯夹中。
cd apache-tomcat/conf/
vim server.xml
2、找到到keystoreFile="cert/214054375370509.pfx"
keystoreType="PKCS12"
keystorePass="证书密码"
完整的配置如下,其中port属性根据实际情况修改
(1)Openssl公私钥使肆粗毁用Openssl公钥私钥用于外部商户系统xxx系统间报文安全性验证使用者需要公私钥直接报文进行处理则参考第四部计算摘要及签名值
1. 安装openssl步骤直接点击exe文件现需要安装vs2008插件直接忽略
2. 安装程找OpenSSL相应安装目录进入bin目录找openssl.exe执行文件点击运行别按顺序输入命令:
a. genrsa –out private-rsa.key 1024
说明:该命令没加密私钥
genrsa 私钥文件私钥存储private-rsa.key度1024out面指定输文件名
private-rsa.key 私钥文件该文件必须经处理私钥
b. req –new –x509 –key private-rsa.key –days 750 –outpublic-rsa.cer
说明:根据private-rsa.key证书public-rsa.cer
-new 表示新请求
-509 表示输证书结构
750表示证书效数
-out public-rsa.cer -out面表示公钥证书用于验证数字签名公钥证书或者公钥需要提前发送给需要验证本单位或部门数据接收
c. pkcs12 –export –name test-alias –in public-rsa.cer–inkey private-rsa.key –out 99bill-rsa.pfx
说明:PKCS12 格式Keystore
密码前输入要致密码用Keystore公私钥程用
Public-rsa.cer, private-rsa.key前
附1:
述代码99bill-rsa.pfx获取私钥Java版本代码private-rsa.key私钥直接使用必须进行定处理
代码几注意点:
文件流初始化路径需要根据自实际路径填写
密码第二节c步骤密码本实例输入suning
KeyStorekeyStore = KeyStore.getInstance("PKCS12")
FileInputStreamfileInputStream = newFileInputStream("D:/OpenSSL/bin/99bill-rsa.pfx")
char[]nPassword = "suning".toCharArray()
StringkeyAlias = null
keyStore.load(fileInputStream,nPassword)
fileInputStream.close()
System.out.println("keystoretype=" + keyStore.getType())
Enumerationenumeration = keyStore.aliases()
if(enumeration.hasMoreElements())
{
keyAlias = (String) enumeration.nextElement()
System.out.println("alias=[" + keyAlias +"]")
}
System.out.println("iskey entry=" + keyStore.isKeyEntry(keyAlias))
PrivateKeyprikey = (PrivateKey) keyStore.getKey(keyAlias, nPassword)
//私钥转字裂备符串
StringprivateStr = Base64.encodeBase64String(prikey.getEncoded()).trim()
//公钥字符串通cer证书凳漏
Certificatecert = keyStore.getCertificate(keyAlias)
PublicKeypubkey = cert.getPublicKey()
StringpublicStr = Base64.encodeBase64String(pubKey.getEncoded()).trim()
注意:
1. 所用类说明:
Base64:
import org.apache.commons.net.util.Base64
Certificate:
import java.security.cert.Certificate
2. openssl公私钥程用户输入密码本例密码suning
1. 摘要及
摘要程(digest全部实现述3程):
1. 根据key传map数据排序;
2. a1=b1&a2=b2&a3=b3形式字符串排除某些字符串Key值;
3. 调用digest进行md5编码;
三步均通Digest.digest()实现:
String digest = Digest.digest(Map map, String... keys)
传递http报文体body内容a1=b1&a2=b2&a3=b3形式字符串提取需要加签字符串并转map形式execludeKes要排除字段字符串数组
计算摘要步关键选取字段要求发送接收必须致即发送哪些字段计算摘要同接收必须相同字段计算摘要否则报6601错误
说明:a. Map存储计算摘要字段
b. keys表示排除字段能用于计算摘要字段signature,signAlgorithm
2. 公钥证书及字符串转换
转换目:便于存储(商户直接提供公钥证书于向验签系统提供公钥字符串商户需要用述代码公钥转字符串)
1. 公钥/私钥字符串转公钥/私钥主要字符串转公钥PublicKey
X509EncodedKeySpec pubKeySpec = newX509EncodedKeySpec(Base64.decodeBase64(strPubKey))
KeyFactorykeyFactory = KeyFactory.getInstance(RSA)
PublicKeypubKey = keyFactory.generatePublic(pubKeySpec)
2. 公钥或私钥转Base64字符串:
StringpublicStr = Base64.encodeBase64String(pubKey.getEncoded()).trim()
3. 公私钥验证
验证目:公私钥需要验证否匹配(前许商户公私钥混乱确定公私钥否匹配添加验签系统)代码由用户自用junit验证运行验证公私钥否确resulttrue则说明公私钥确;否则公私钥问题能使用
String prik1 =""
String pubb =""
String data ="wkk"
String digest =Digest.digest(data)
PrivateKey privateKey =RSAUtil.getPrivateKey(prik1)
String sign =RSAUtil.sign(digest, privateKey)
boolean result =RSAUtil.vertiy(digest, sign,
RSAUtil.getPublicKey(pubb))
System.out.println(result)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)