「javacsr证书」javassl证书

博主:adminadmin 2022-11-29 10:45:07 71

本篇文章给大家谈谈javacsr证书,以及javassl证书对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 怎么验证文件为数字签名认证文件

1)从密钥库中读取CA的证书

FileInputStream in=new FileInputStream(".keystore");

KeyStore ks=KeyStore.getInstance("JKS");

ks.load(in,storepass.toCharArray());

java.security.cert.Certificate c1=ks.getCertificate("caroot");

(2)从密钥库中读取CA的私钥

PrivateKey caprk=(PrivateKey)ks.getKey(alias,cakeypass.toCharArray());

(3)从CA的证书中提取签发者的信息

byte[] encod1=c1.getEncoded(); 提取CA证书的编码

X509CertImpl cimp1=new X509CertImpl(encod1); 用该编码创建X509CertImpl类型对象

X509CertInfo cinfo1=(X509CertInfo)cimp1.get(X509CertImpl.NAME+"."+X509CertImpl.INFO); 获取X509CertInfo对象

X500Name issuer=(X500Name)cinfo1.get(X509CertInfo.SUBJECT+"."+CertificateIssuerName.DN_NAME); 获取X509Name类型的签发者信息

(4)获取待签发的证书

CertificateFactory cf=CertificateFactory.getInstance("X.509");

FileInputStream in2=new FileInputStream("user.csr");

java.security.cert.Certificate c2=cf.generateCertificate(in);

(5)从待签发的证书中提取证书信息

byte [] encod2=c2.getEncoded();

X509CertImpl cimp2=new X509CertImpl(encod2); 用该编码创建X509CertImpl类型对象

X509CertInfo cinfo2=(X509CertInfo)cimp2.get(X509CertImpl.NAME+"."+X509CertImpl.INFO); 获取X509CertInfo对象

(6)设置新证书有效期

Date begindate=new Date(); 获取当前时间

Date enddate=new Date(begindate.getTime()+3000*24*60*60*1000L); 有效期为3000天

CertificateValidity cv=new CertificateValidity(begindate,enddate); 创建对象

cinfo2.set(X509CertInfo.VALIDITY,cv); 设置有效期

(7)设置新证书序列号

int sn=(int)(begindate.getTime()/1000); 以当前时间为序列号

CertificateSerialNumber csn=new CertificateSerialNumber(sn);

cinfo2.set(X509CertInfo.SERIAL_NUMBER,csn);

(8)设置新证书签发者

cinfo2.set(X509CertInfo.ISSUER+"."+CertificateIssuerName.DN_NAME,issuer);应用第三步的结果

(9)设置新证书签名算法信息

AlgorithmId algorithm=new AlgorithmId(AlgorithmId.md5WithRSAEncryption_oid);

cinfo2.set(CertificateAlgorithmId.NAME+"."+CertificateAlgorithmId.ALGORITHM,algorithm);

(10)创建证书并使用CA的私钥对其签名

X509CertImpl newcert=new X509CertImpl(cinfo2);

newcert.sign(caprk,"MD5WithRSA"); 使用CA私钥对其签名

(11)将新证书写入密钥库

ks.setCertificateEntry("lf_signed",newcert);

FileOutputStream out=new FileOutputStream("newstore");

ks.store(out,"newpass".toCharArray()); 这里是写入了新的密钥库,也可以使用第七条来增加条目

jks 证书文件的生成步骤

作为文件形式存在的证书,一般有三类:

A.

包含有私钥的证书,包含了公钥和私钥,用pkcs12标准,而一般以pfx 作为扩展名;

B.

DER 编码证书,不含私钥,以cer 结尾,文件是二进制data. 通常CA(无论是intermediate CA还是root CA)证书都是这类;

C.

BASE64编码的证书,这类证书也不含私钥,一般也以cer结尾,是pem证书, 这类证书可以直接cat 出结果, 特征是”-----BEGIN CERTIFICATE----- “开头,“-----END CERTIFICATE-----”结尾;

对于DER/PEM证书,可以通过openssl 来确认其编码类型(假设要查看的证书是client_cert.cer):

openssl x509 -in ./client_cert.cer -inform pem -noout -text

openssl x509 -in ./client_ert.cer -inform der -noout -text

jks 是java key store 的简称,也就是java 常用的证书文件. jks 证书文件一般包含私钥以及签名的cert一起组成的. 要生成jks 可以使用java 的keytool工具 以及openssl 来完成,没有特殊需求的情况先,可以只用这两个工具就可以了:

基本的过程是这样的:

具体的步骤如下:

上述创建私钥以及生成CSR的过程,可以用keytool工具来实现(MW的support 人员更乐于用keytool工具来实现),具体为:

上述步骤就成功创建了csr文件,并且成功获得了对应的private key. (无论是基于openssl 命令还是keytool命令)

然后需要将csr发送给证书签发者,然后证书签发者进行证书的签发; 签发后,一般会发回 crt 证书文件. 以及root ca, intermediate ca 还有签发的pem证书;

后面的步骤是创建证书链:

查看证书:

keytool -list -v -keystore test_keystore2.jks -storepass xoxoxo

查看证书请求文件:

keytool -printcertreq -file

查看已经签名的证书:

keytool -printcert -file GlobalSign_cert.cer

如何通过本机简单验证ssl 证书是否正确呢? 用openssl 命令在本机开启ssl 的服务器和客户端,然后用ssl 方式进行连接进行验证:

然后看输出的结果,就知道是否证书是ok的;

diff -eq (openssl x509 -pubkey -noout -in mycert.crt) (openssl rsa -pubout -in mycert.key)

如何生成多域名证书

第一步:生成多域名证书的CSR

方法一:用openssl生成多域名证书的CSR

How to generate a new Certificate Signing Request (CSR):

Generate a TLS private key if you don't have one:

openssl genrsa 4096 domain.key

Generate a CSR for your the domains you want certs for:

(replace "foo.com" with your domain)

Linux:

#change "/etc/ssl/openssl.cnf" as needed:

#  Debian: /etc/ssl/openssl.cnf

#  RHEL and CentOS: /etc/pki/tls/openssl.cnf

#  Mac OSX: /System/Library/OpenSSL/openssl.cnf

openssl req -new -sha256 -key domain.key -subj "/" \

-reqexts SAN -config (cat /etc/ssl/openssl.cnf \

(printf "[SAN]\nsubjectAltName=DNS:foo.com,DNS:"))

方法二:用java下的keytool生成多域名证书的CSR

keytool -genkeypair -dname "CN=example.com"  -keyalg RSA  -alias example -keypass 123456 -keystore example.jks  -storepass 123456 -validity 3650

keytool -certreq -keyalg RSA -keystore example.jks -storepass 123456 -alias example -ext san=dns: -file example.csr

第二步:将CSR提交给CA去签名

第三步:将签名结果、中间证书和根证书配置到服务器上,或先导入到keystore中,再把keystore配置到服务器上。

注意:有人声称可以在dname中配置多个CN来制作多域名证书,经过测试,这个方法是行不通的,在导入签名结果后,只有第一个CN生效。

关于javacsr证书和javassl证书的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。