『壹』 如何用已有的证书文件和私钥文件生成keystore
首先不能使用java的类库.除非你使用了JNI但是与其这样,不如直接使用JAVA第二访问https可以使用OpenSSL,keystore文件中的证书只是个密钥.提取出来后完全可以用一般的SSL方式进行post或者get连接代码互联网上有的是
『贰』 keystore怎么生成证书和密钥
步骤:
1.生成server端密钥
[html] view plain
1. keytool -genkey -alias serverkey -keystore key OfServer.keystore
之后会出现如下信息,(第一次输入密码:打开keystore文件密码,第二次密码为秘钥,一般两次密码相同)
根据私钥导出服务端证书(将把证书库 monitor.keystore中的别名为 serverkey的证书导出到KeyOfServer.cer证书文件中,它包含证书主体的信息及证书的公钥,不包括私钥,可以公开。)
[html] view plain
1. keytool -export -alias serverkey -keystore keyOfServer.keystore -file server.crt
将服务端证书,加入客户端的认证证书列表中(只包含公钥)
[html] view plain
1.keytool -import -alias serverkey -file server.crt -keystore trustOfClient.keystore
2:生成client端密钥
[html] view plain
1. keytool -genkey -alias clientkey -keystore keyOfClient.keystore <span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
根据私钥导出客户端证书
[html] view plain
1. keytool -export -alias clientkey -keystore keyOfClient.keystore -file client.crt
将证书加到服务端信任列表
[html] view plain
1. keytool -import -alias serverkey -file client.crt -keystore trustOfServer.keystore
至此,客户端和服务器端的证书都已经生成了
『叁』 如何用已有的证书文件和私钥文件生成keystore-CSDN论坛
(1)公私钥
使用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");
= 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);
『肆』 怎样根据已有的公钥和私钥生成数字证书
openssl genrsa -des3 -out server.key 1024
运行时来会提示输入密码,此密码用源于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key!
『伍』 java使用keytool生成证书的时候怎们样设置公钥和私钥还有keystore密码是什么
1.私钥公钥不是用户自己输入的,是RSA算法自动生成的,而你输入的密码只是打开那个文件或生成的证书的密码.
2.密码为“changeit”,而如果尝试几次都不成功的话,就到$JAVA_HOME\jre\lib\security\目录下去配就可以了
『陆』 如何生成CA证书
创建根证书密钥文件(自己做CA)root.key:
创建根证书的申请文件root.csr:
创建一个自当前日期起为期十年的根证书root.crt:
创建服务器证书密钥server.key:
创建服务器证书的申请文件server.csr
创建自当前日期起有效期为期两年的服务器证书server.crt
创建客户端证书密钥文件client.key
创建客户端证书的申请文件client.csr
创建一个自当前日期起有效期为两年的客户端证书client.crt
将客户端证书文件client.crt和客户端证书密钥文件client.key合并成客户端证书安装包client.pfx
保存生成的文件备用,其中server.crt和server.key是配置单向SSL时需要使用的证书文件,client.crt是配置双向SSL时需要使用的证书文件,client.pfx是配置双向SSL时需要客户端安装的证书文件 .crt文件和.key可以合到一个文件里面,把2个文件合成了一个.pem文件(直接拷贝过去就行了)
『柒』 SSL中,公钥,私钥,证书的后缀名都是些啥
SSL证书后缀
CSR – Certificate Signing Request,即证书签名请求,这个并不是证书,而是向权威证书颁发机构获得签名证书的申请,其核心内容是一个公钥(当然还附带了一些别的信息),在生成这个申请的时候,同时也会生成一个私钥,私钥要自己保管好.做过iOS APP的朋友都应该知道是怎么向苹果申请开发者证书的吧.
KEY– 通常用来存放一个RSA 公钥或者私钥,并非X.509证书,编码同样的,可能是PEM,也可能是DER.
CRT– CRT应该是certificate的三个字母,其实还是证书的意思,常见于*NIX系统,有可能是PEM编码,也有可能是DER编码,大多数应该是PEM编码。本站提供的CRT格式等同于CER,等同于PEM。
PEM – Privacy Enhanced Mail的缩写,以文本的方式进行存储。打开看文本格式,以”—–BEGIN…”开头, “—–END…”结尾,内容是编码. 查看PEM格式证书的信息:openssl x509 -in certificate.pem -text -noout Apache和*NIX服务器偏向于使用这种编码格式.
CER– 还是certificate,还是证书,常见于Windows系统,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码.
DER – Distinguished Encoding Rules的缩写,以二进制方式进行存储,文件结构无法直接预览,查看DER格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout Java和Windows服务器偏向于使用这种编码格式.
PFX/P12 – predecessor of PKCS#12,对*nix服务器来说,一般CRT和KEY是分开存放在不同文件中的,但Windows的IIS则将它们存在一个PFX文件中,(因此这个文件包含了证书及私钥)这样会不会不安全?应该不会,PFX通常会有一个”提取密码”,你想把里面的东西读取出来的话,它就要求你提供提取密码,PFX使用的时DER编码,如何把PFX转换为PEM编码?
JKS – 即Java Key Storage,这是Java的专利,跟OpenSSL关系不大,利用Java的一个叫”keytool”的工具,可以将PFX转为JKS,当然了,keytool也能直接生成JKS。
『捌』 如何生成openssl证书
2. 生成Root CA私钥与证书:
2.1 先生成RootCA私钥--》使用私钥生成CSR--》生成自签名根证书。用来给二级CA证书签名。
3. 生成二级CA 私钥与证书:(假如有两个二级CA, 分别负责管理服务器端和客户端证书)
3.1 先生成ServerCA私钥--》使用私钥生成CSR--》使用根证书签名生成二级证书。用来给服务器证书签名。
3.2 先生成ClientCA私钥--》使用私钥生成CSR--》使用根证书签名生成二级证书。用来给客户端证书签名。
4. 生成服务器端与客户端的私钥与证书:
4.1 先生成ServerA私钥--》使用私钥生成CSR--》使用ServerCA证书签名生成三级证书。
4.2 先生成ClientA私钥--》使用私钥生成CSR--》使用ClientCA证书签名生成三级证书。
4.3 先生成ClientB私钥--》使用私钥生成CSR--》使用ClientCA证书签名生成三级证书
。。。。可以生成N个客户端证书证书结构:RootCA||-------ServerCA| || |--------ServerA||-------ClientCA||--------ClientA||--------ClientB||--------...|
5. 导出RootCA的根证书、服务器端和客户端的私钥和证书。
导出时都使用pem格式。
RootCA.pem-------根证书(PEM )
ServerA.pem------服务器端证书(PEM with Certificate chain)
ClientA.pem------客户端证书(PEM with Certificate chain)
ClientB.pem------客户端证书(PEM with Certificate chain)
ServerAKey.pem------服务器端私钥(PEM )
ClientAKey.pem------客户端私钥(PEM )
ClientBKey.pem------客户端私钥(PEM )
6.下面是最重要的一步:生成需要使用的JKS文件。keytool工具不能导入私钥,需要利用到weblogic 提供的一个工具,需要把weblogic.jar加到CLASSPATH。
6.1 生成服务器和客户端的信任证书库:
keytool -import -alias rootca -file RootCA.pem -keystore trust.jks
6.2 生成服务器端身份密钥库:
java utils.ImportPrivateKey -keystore servera.jks -storepass 123456 -storetype JKS -keypass 123456 -alias servera -certfile ServerA.pem -keyfile ServerAKey.pem
6.3 生成客户端身份密钥库:
java utils.ImportPrivateKey -keystore clienta.jks -storepass 123456 -storetype JKS -keypass 123456 -alias clienta -certfile ClientA.pem -keyfile ClientAKey.pem ...生成其他客户端身份密钥库
7. keytool -list -v -keystore clienta.jks (servera.jks) 可以查看其中的证书链关系。
『玖』 我已经有一个SSL证书,但是私钥怎么生成啊求指教
您好!
SSL证书与私钥是相互匹配的,如果您只有SSL证书却没有私钥内的话,请您重新申请容SSL证书。生成CSR文件同时会生成密钥KEY文件(私钥生成可以直接“CSR文件生成”各大搜索引擎都可以找到工具)!非常重要,请把生成好的CSR文件和KEY文件下载到电脑妥善保存,CSR和KEY文件随机生成,如果丢失无法找回,只能重新发出申请请求。
概述:当申请者申请SSL证书时,生成了CSR文件同时生成KEY私钥文件。申请者将CSR文件提交至CA机构SSL证书颁发机构,从而就生成了SSL证书公钥文件。如果实在不行也可以找到Gworg申请SSL证书,会将这些文档整个提供。
简述申请SSL证书流程:
一、CSR请求文件生成(文件包括:私钥KEY与CSR文件)
二、提供CSR文件给SSL证书颁发机构
三、按照固定认证完毕后,获得SSL证书