https加密证书如何申请?

https加密证书如何申请?,第1张

(1)Openssl生成公私
使用Openssl是为了生成公钥和私钥对,用于外部商户系统和xxx系统之间报文的安全性验证。如果使用者不需要生成公私钥,而是直接对报文进行处理,则参考第四部分,计算摘要及签名值。
1 安装openssl步骤直接点击exe文件。出现需要安装vs2008插件的,直接忽略。
2 在安装过程中找到OpenSSL相应的安装目录,进入bin目录下找到opensslexe可执行文件,点击运行。然后分别按顺序输入如下命令:
a genrsa –out private-rsakey 1024
说明:该命令是生成一个没有加密的私钥
genrsa 生成私钥文件,私钥存储在private-rsakey中,长度为1024。out后面指定输出文件名。
private-rsakey 为生成的私钥文件,但该文件必须经过处理得到私钥。
b req –new –x509 –key private-rsakey –days 750 –outpublic-rsacer
说明:根据private-rsakey生成证书public-rsacer
-new 表示新的请求
-509 表示输出的证书结构
750表示证书有效天数
-out public-rsacer -out后面表示公钥证书,用于验证数字签名,此公钥证书或者公钥需要提前发送给需要验证本单位或部门数据的接收方。
c pkcs12 –export –name test-alias –in public-rsacer–inkey private-rsakey –out 99bill-rsapfx
说明:生成PKCS12 格式Keystore
密码前后输入要一致,这个密码在用Keystore生成公私钥过程中会用到。
Public-rsacer, private-rsakey是之前生成的。
附1:
下述代码是从99bill-rsapfx中获取私钥的Java版本代码。因为private-rsakey中生成的私钥无法直接使用,必须进行一定的处理。
代码有几个注意点:
文件流初始化路径需要根据自己的实际路径来填写。
密码是在第二节中c步骤中的密码,本实例输入的是suning。
KeyStorekeyStore = KeyStoregetInstance("PKCS12");
FileInputStreamfileInputStream = newFileInputStream("D:/OpenSSL/bin/99bill-rsapfx");
char[]nPassword = "suning"toCharArray();
StringkeyAlias = null;
keyStoreload(fileInputStream,nPassword);
fileInputStreamclose();
Systemoutprintln("keystoretype=" + keyStoregetType());
Enumerationenumeration = keyStorealiases();
if(enumerationhasMoreElements())
{
keyAlias = (String) enumerationnextElement();
Systemoutprintln("alias=[" + keyAlias +"]");
}
Systemoutprintln("iskey entry=" + keyStoreisKeyEntry(keyAlias));
PrivateKeyprikey = (PrivateKey) keyStoregetKey(keyAlias, nPassword);
//私钥转成字符串
StringprivateStr = Base64encodeBase64String(prikeygetEncoded())trim();
//生成公钥字符串,还可以通过cer证书生成
Certificatecert = keyStoregetCertificate(keyAlias);
PublicKeypubkey = certgetPublicKey();
StringpublicStr = Base64encodeBase64String(pubKeygetEncoded())trim();
注意:
1 所用类的说明:
Base64:
import orgapachecommonsnetutilBase64;
Certificate:
import javasecuritycertCertificate;
2 在openssl生成公私钥过程中,用户输入了密码。本例中密码为suning。
1 摘要及生成方法
摘要的生成过程(digest方法全部实现了下述3个过程):
1 根据key对传来的map数据排序;
2 生成a1=b1&a2=b2&a3=b3形式的字符串,排除某些字符串Key值;
3 调用digest方法进行md5编码;
以上三步均通过Digestdigest()方法实现:
String digest = Digestdigest(Map map, String keys);
传递的>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12716048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存