问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何安装openssl 生成证书

发布网友 发布时间:2022-05-03 04:51

我来回答

1个回答

热心网友 时间:2023-10-10 01:44

(1)Openssl生成公私钥
使用Openssl是为了生成公钥和私钥对,用于外部商户系统和xxx系统之间报文的安全性验证。如果使用者不需要生成公私钥,而是直接对报文进行处理,则参考第四部分,计算摘要及签名值。
1. 安装openssl步骤直接点击exe文件。出现需要安装vs2008插件的,直接忽略。

2. 在安装过程中找到OpenSSL相应的安装目录,进入bin目录下找到openssl.exe可执行文件,点击运行。然后分别按顺序输入如下命令:
a. genrsa –out private-rsa.key 1024
说明:该命令是生成一个没有加密的私钥
genrsa 生成私钥文件,私钥存储在private-rsa.key中,长度为1024。out后面指定输出文件名。
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());
Enumeration<String>enumeration = 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<String,String> 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验证运行。验证公私钥生成是否正确,如果result为true,则说明公私钥生成正确;否则生成的公私钥有问题,不能使用。
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);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
酒驾缓刑节保证书怎么写 合同法律咨询免费 这款充电宝可以带上飞机吗? 倪俊卿成就及荣誉 江苏种牛站有几家? 山东宏正牧业有限公司服务承诺 吃早餐后抽血会影响体检结果吗 电脑如何设置护眼模式(台式电脑如何设置护眼模式) 电脑显示器设置护眼电脑屏幕怎么设置比较护眼 广告机是否支持分屏显示功能? 塑料杯盖上带有硅胶密封圈,扭入盖子到塑料杯子时胶圈会有摩擦响声怎么解决?谢谢! 新生儿在睡觉的时候打嗝,这是正常的吗? openssl_encrypt到底几个参数? 如何用openssl命令生成txt文件? 倒过开水后,保温杯的盖子拿起来听有发出间断地、滋滋的声音?彻底冷掉后就听不到了,怎么回事? openssl base64怎么变成二进制 如何利用openssl来进行base64编解码 使用OpenSSL怎么进行BASE64编解码 一般封多久就自动解封? 华为nova2怎么显来电量数字 华为nova 3如何显示电量百分比 手机为什么连接不上蓝牙耳机 请教:excel或access中,如何提取同一单元格中的不重复字符串? 1到10的取3个数的所有组合? 四位数字不重复排列 排列组合 疑问1 在电子表格内A1:C10这个范围内输入的数字要求不重复 怎么设置?谢谢 有关EXCEL随机抽样问题 现在中国联通卡有免费流量领吗? 标有1-10的10张卡片,从中选取3张,不重复,共有多少种选法? 特百惠500毫升正品保温杯内盖拧开或拧紧都会有咬合的声音吗?(声音很响的),求专业人士解决,谢谢 新生儿在睡觉时候打嗝,一般是由于哪些方面的原因引起的? 一开网页就出现error occurred是怎么回事 新生儿在睡觉的时候打嗝,宝妈需要进行特别的护理吗? photoshop中,为什么老是出现Disk error, 1 occurred while reading or writing to scratch disk. 新生儿睡觉老是打嗝怎么办 shell生成随机数的几种方法 突然弹出的:error occurred 对话框!内容在里面! 如何把OpenSSH公钥转换成OpenSSL格式 好的保温杯能听见嗡嗡的声音? photoshop出错Disk error-1 occurred while reading or writing to a scratch disk。 win7系统开机出现error occurred,SONY系统为英文。 ,如图, 请高手解决,谢谢 服务器启动时,阵列有一硬盘红色提醒:Error Occurred 我也有同样的情况。请问你是怎么解决的? 为什么我一打开游戏就出现 An error occurred 。。。 安装ANSYS时出现:Error occurred:指定的服务并未以已安装的服务存在,因此不能使用,求高手指点 the error 1b6 occurred.your certificate request could not de generated. 用酵母和白糖加点奶粉发面发过头了有一股淡淡的酒味还能吃吗? 农行网银The error &#39;1B6&#39; occurred Your certificate couid not be generated这个是什么意思?怎么解决 有合适的亚马逊培训公司吗? 找到打印机——“属性”——“高级”——“保留打印的文档”前面打钩,确定。