证书(Certificate,也称public-key certificate)是用某种签名算法对某些内容(比如公钥)进行数字签名后得到的、可以用来当成信任关系中介的数字凭证。证书发行机构通过发行证书告知证书使用者或实体其公钥(public-key)以及其它一些辅助信息。证书在电子商务安全交易中有着广泛的应用,证书发行机构也称 CA(Certificate Authority)。
最近做项目用到证书,做个小结
是用RSA私钥加密,用证书解密,我觉得反过来也可以
之前用过RSA公钥加密,私钥解密,(或私钥加密,公钥解密)
参考:java RSA
感觉这两个很类似
证书一般包括证书信息和公钥,不包括私钥。 有的包括私钥。
可以用java命令:keytool 生成自签证书,其实生成证书很简单的
keytool 或 keytool -help 查看帮助
keytool参数:
-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
(在没有指定生成位置的情况下,keystore会存在用户系统默认目录,如:对于window xp系统,会生成在系统的C:/Documents and Settings/UserName/文件名为“.keystore”)
-alias 产生别名
-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)
-keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA))
-validity 指定创建的证书有效期多少天
-keysize 指定密钥长度
-storepass 指定密钥库的密码(获取keystore信息所需的密码)
-keypass 指定别名条目的密码(私钥的密码)
-dname 指定证书拥有者信息 例如: "CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码"
-list 显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码
-v 显示密钥库中的证书详细信息
-export 将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码
-file 参数指定导出到文件的文件名
-delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore -storepass 密码
-printcert 查看导出的证书信息 keytool -printcert -file yushan.crt
-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore sage
-storepasswd 修改keystore口令 keytool -storepasswd -keystore e:/yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码)
-import 将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书
下面是各选项的缺省值。
-alias "mykey"
-keyalg "DSA"
-keysize 1024
-validity 90
-keystore 用户宿主目录中名为 .keystore 的文件
-file 读时为标准输入,写时为标准输出
创建证书
逐个询问生成
keytool -genkey
指定一部分生成
keytool -genkey -alias cms -keyalg RSA -keysize 1024 -validity 4000
C:\Documents and Settings\zhao>keytool -genkey -alias cms -keyalg RSA -keysize 1024 -validity 4000
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[CMS]: CMS
您的组织单位名称是什么?
[gongsi]: gongsi
您的组织名称是什么?
[zuzhi]: zuzhi
您所在的城市或区域名称是什么?
[chengsi]: chengshi
您所在的州或省份名称是什么?
[sheng]: sheng
该单位的两字母国家代码是什么
[CN]: CN
CN=CMS, OU=gongsi, O=zuzhi, L=chengshi, ST=sheng, C=CN 正确吗?
[否]: y
输入<cms>的主密码
(如果和 keystore 密码相同,按回车):
查看证书
C:\Documents and Settings\zhao>keytool -list -rfc
输入keystore密码:
Keystore 类型: JKS
Keystore 提供者: SUN
您的 keystore 包含 1 输入
别名名称: cms
创建日期: 2014-10-14
项类型: PrivateKeyEntry
认证链长度: 1
认证 [1]:
-----BEGIN CERTIFICATE-----
MIICNTCCAZ6gAwIBAgIEVDy1sDANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJDTjEOMAwGA1UE
CBMFc2hlbmcxETAPBgNVBAcTCGNoZW5nc2hpMQ4wDAYDVQQKEwV6dXpoaTEPMA0GA1UECxMGZ29u
Z3NpMQwwCgYDVQQDEwNDTVMwHhcNMTQxMDE0MDUzMzM2WhcNMjUwOTI2MDUzMzM2WjBfMQswCQYD
VQQGEwJDTjEOMAwGA1UECBMFc2hlbmcxETAPBgNVBAcTCGNoZW5nc2hpMQ4wDAYDVQQKEwV6dXpo
aTEPMA0GA1UECxMGZ29uZ3NpMQwwCgYDVQQDEwNDTVMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
AoGBAJtM5mFea7QOJ8749zN8VzxzaRXht7lGkmR7KgcgAUl+hB6mrhVTDe5VQMgmDk7Npgue0w1d
ZJJUAQATSTqFC+D2+I8dcdVNe+622kXLkpDROcJUKprduAvKakNUWwGsx4mrfaJplP/JaqkhKzxH
T3Xb2OSlAdj9/+/wkIsIxg+VAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAEuPvcFDsPw9uBDoAh5sy
52zCdiBNegazwZIPhXwfW2bxKPQqCKosCTHux3GPdI5ShK2p3BAxthuF072jC3DFtubtg2vRwZt9
bO9m1GeCIUVrCIbRv5Y0fMkOKRkHM7t6mbEHAvL/146XReIs8XQsjA8sFFHz0hCkbHd/auK4hek=
-----END CERTIFICATE-----
导出证书
默认导出到用户主目录
导出二进制格式证书
keytool -export -alias cms -file cms.cer -storepass 123456
导出base64格式证书
keytool -export -alias cms -file cms.cer -storepass 123456 -rfc
二进制格式证书也可以"另存为"base64格式的证书
双击打开cms.cer 选择详细信息 点击复制到文件 ……
指定keystore的
keytool -genkey -alias cms -keyalg RSA -keysize 1024 -keystore C:\mykeystore -validity 4000
keytool -list -keystore C:\mykeystore -rfc
keytool -export -alias cms -file cms.cer -keystore C:/mykeystore -storepass 123456 -rfc
java keystore导出证书,导出私钥,导出公钥
http://happyqing.iteye.com/blog/2139504
参考: