1、cmd 进入命令行模式
2、建立服务端密钥库,并制作证书
keytool.exe -genkeypair -v -alias sslsocket -keyalg RSA -keystore f:\project\sslsocket.keystore
执行命令后如下操作:口令为alaric ,
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: zhang
您的组织单位名称是什么?
[Unknown]: caituo
您的组织名称是什么?
[Unknown]: caituo
您所在的城市或区域名称是什么?
[Unknown]: hz
您所在的省/市/自治区名称是什么?
[Unknown]: zj
该单位的双字母国家/地区代码是什么?
[Unknown]: cn
CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=cn是否正确?
[否]: y
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 90 天
):
CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=cn
输入
(如果和密钥库口令相同, 按回车):
密钥口令太短 - 至少必须为 6 个字符
输入
(如果和密钥库口令相同, 按回车):
新证书 (自签名):
[
[
Version: V3
Subject: CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=cn
Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11
Key: Sun RSA public key, 2048 bits
modulus: 303520715106134044774553832176678161976466110232782543068510607959727
99879298372836008080160885516252290208157123210298097709152968777556381288372542
87979685737351206639906550753178638852526567607189284937159166427830492947104763
36035038742281248315478521897752458095093015757688869858798283147927453489929549
01701270099027426242114483326948998856558222518435355034329674256781210677758092
29266049830491386408557436514678259266252826510002204133628130622320090765231478
52967428179793680484294163661111431892255009146586408340202652166621044899308970
27029941724718372009348653037920999813093737602161591646688690916999
public exponent: 65537
Validity: [From: Sat May 25 21:15:23 CST 2013,
To: Fri Aug 23 21:15:23 CST 2013]
Issuer: CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=cn
SerialNumber: [ 297fbde0]
Certificate Extensions: 1
[1]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 70 83 45 C8 F7 C4 7A DE 75 8A 8B 17 3F BD 9F F8 p.E...z.u...?...
0010: 08 23 24 F8 .#$.
]
]
]
Algorithm: [SHA256withRSA]
Signature:
0000: 95 7D 65 3F 13 62 7E CC 77 8E D4 DA 13 B5 AE E2 ..e?.b..w.......
0010: B7 EE 3B B5 06 34 D7 AF 9E 10 44 EE CB 8B 60 98 ..;..4....D...`.
0020: F0 E7 C2 AC 12 6A B0 C7 CB 2B 10 F6 F1 EB 22 51 .....j...+...."Q
0030: 73 AA 5E B1 E0 B7 10 9A 64 E4 06 51 2F A9 78 82 s.^.....d..Q/.x.
0040: 6C 07 CC 55 28 68 25 4F 6F AE 3C CF A0 BC C7 3B l..U(h%Oo.<....;
0050: 5D 17 CD 86 9B 63 EC 42 58 55 37 37 57 6B D1 F8 ]....c.BXU77Wk..
0060: C0 3D E3 09 4D F3 F0 A1 1D 72 AA FD E4 72 D8 EA .=..M....r...r..
0070: 82 C5 33 21 F2 77 24 A2 D5 76 4B 18 4E DF 20 44 ..3!.w$..vK.N. D
0080: CC DE 77 72 5B 41 EB 1D 7A 46 79 EE 01 69 B0 0B ..wr[A..zFy..i..
0090: 64 9C 6B 47 E7 35 EF 62 F5 E9 75 1C A9 10 F1 E6 d.kG.5.b..u.....
00A0: 58 4E 8D 28 85 CC 6D 69 CE 7C A9 07 7A A5 83 E4 XN.(..mi....z...
00B0: 18 1B CA 35 81 13 42 6A 14 43 80 FA 00 15 B6 6C ...5..Bj.C.....l
00C0: 68 F3 96 B0 36 01 47 C9 D0 8B 82 2C CC A6 F1 F5 h...6.G....,....
00D0: 04 99 2F B6 57 CC 7E 99 8C D2 1A DE EE BC 32 38 ../.W.........28
00E0: EB 3E 65 08 6E B0 43 89 08 26 0A 10 15 69 A8 7A .>e.n.C..&...i.z
00F0: AD 50 0A 10 78 C3 36 5E 91 42 58 FF 87 F8 B0 67 .P..x.6^.BX....g
]
[正在存储f:\project\sslsocket.keystore]
3、制作证书:
执行命令:
keytool.exe -exportcert -v -alias sslsocket -file f:\proj
ect\sslsocket.cer -keystore f:\project\sslsocket.keystore
输入密钥库口令:
存储在文件
这里的口令是上面的: alaric
4、 保存服务器端证书到客户端密钥库,以备客户接收到服务器端证书进行验证
执行命令:
1.keytool.exe -importcert -v -alias sslsocketcer -file f:\project\sslsocket.cer -keystore f:\project\sslclient.keystore
执行命令后:
输入密钥库口令:
再次输入新口令:
所有者: CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=cn
发布者: CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=cn
序列号: 297fbde0
有效期开始日期: Sat May 25 21:15:23 CST 2013, 截止日期: Fri Aug 23 21:15:23 CST
2013
证书指纹:
MD5: D8:01:80:F1:E1:EE:2B:00:9E:BE:95:FA:BA:A3:12:52
SHA1: 76:43:50:BB:15:A0:F3:66:AA:46:EB:36:1B:2F:36:2A:B0:55:B1:C0
SHA256: 38:0C:83:36:07:E1:7C:74:B5:1B:0F:A8:26:A6:D0:6F:57:67:2D:5C:5C:
B0:9D:D8:1D:05:1D:C9:D6:F0:07:8D
签名算法名称: SHA256withRSA
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 70 83 45 C8 F7 C4 7A DE 75 8A 8B 17 3F BD 9F F8 p.E...z.u...?...
0010: 08 23 24 F8 .#$.
]
]
是否信任此证书? [否]: y
证书已添加到密钥库中
[正在存储f:\project\sslclient.keystore]
这样就完成了服务端证书客户单验证的过程,这时候f:/project下面有就三个文件了
sslclient.keystore
sslsocket.cer
sslsocket.keystore
这个是一个过程,还有一个过程跟这个相反,就是客户端生成证书,服务端验证。
5、 生成客户端密钥库
命令:keytool.exe -genkeypair -v -alias sslsockettwo -keyalg RSA -keystore f:\project\sslclienttwo.keystore
结果:
您的名字与姓氏是什么?
[zhang]: zhang
您的组织单位名称是什么?
[caituo]: caituo
您的组织名称是什么?
[caitou]: caituo
您所在的城市或区域名称是什么?
[Unknown]: hz
您所在的省/市/自治区名称是什么?
[Unknown]: zj
该单位的双字母国家/地区代码是什么?
[Unknown]: zh
CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=zh是否正确?
[否]: y
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 90 天
):
CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=zh
输入
(如果和密钥库口令相同, 按回车):
新证书 (自签名):
[
[
Version: V3
Subject: CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=zh
Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11
Key: Sun RSA public key, 2048 bits
modulus: 246615209155440542928967004109483797069224610601131800176007759879125
67945361105654211958548021674568396031442747389170762209980024152574030514154328
32340428555847149292054793825986106460180280882140851132231280163147513435212200
76952454757730768170487748779720340255737493538009585313335885976427899534075014
82847166438474744919806247432278003930499082983291751324491299170276917368366263
65446028452747704661690571225537301574940895862917847646413481666409753244508412
43954093252713578576992345810820388271673780099942035074548747005288032030183903
77121310228193620818287289223575934598382253815598876962904828822851
public exponent: 65537
Validity: [From: Sat May 25 21:29:44 CST 2013,
To: Fri Aug 23 21:29:44 CST 2013]
Issuer: CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=zh
SerialNumber: [ 5f7fe563]
Certificate Extensions: 1
[1]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 69 9B C2 D5 0F B1 EF 7D 14 B1 2C 7C A6 6E 83 80 i.........,..n..
0010: AF 98 63 20 ..c
]
]
]
Algorithm: [SHA256withRSA]
Signature:
0000: B8 AD 73 FE E7 50 AB 23 95 75 5E 44 B2 D2 1E 54 ..s..P.#.u^D...T
0010: 7E 3C 31 92 75 FB FA 36 78 2E 7C C1 ED 9E 2D 49 .<1.u..6x.....-I
0020: 34 2B 05 EE 59 18 CB 09 0F 82 2E 63 8C B5 4C 91 4+..Y......c..L.
0030: 69 3C EB AA 53 F7 9E 49 FA B7 47 96 9B 0A A2 49 i<..S..I..G....I
0040: 99 74 FE 26 39 38 D5 CC A6 9F 96 67 C6 22 D1 B4 .t.&98.....g."..
0050: 2B BF FC C1 C4 55 91 D7 DA FA 29 A9 23 4E C0 72 +....U....).#N.r
0060: BA 0A D4 8B 75 C7 8F 21 9D 5E D9 63 59 60 59 13 ....u..!.^.cY`Y.
0070: 43 19 54 A6 DB B6 58 6D 86 C1 7B 9C 36 EC 71 A9 C.T...Xm....6.q.
0080: 4D 09 04 77 29 1A B2 8C 43 49 C0 E3 6F 97 8E 8D M..w)...CI..o...
0090: 99 EC B1 DE 0B FA B6 38 B0 8A 4F 95 4F 66 34 C0 .......8..O.Of4.
00A0: 74 03 64 43 A2 94 0C E6 3B 33 5C B7 0A 36 30 1B t.dC....;3\..60.
00B0: 18 59 CF D2 93 1E A8 8F 98 74 44 18 12 AE FC 1F .Y.......tD.....
00C0: 5E 50 BB 4C DE 0F 1E 7E E9 D1 84 9D 91 1F D0 00 ^P.L............
00D0: 20 FD E4 D5 C4 9F 10 EF C7 4F 9A D8 0D F8 28 08 ........O....(.
00E0: F3 10 94 A2 70 88 51 25 C4 25 81 8B 9E FE 07 0F ....p.Q%.%......
00F0: 52 9A 5B 65 19 AA EB 35 3C 15 A4 47 31 8B 40 2B R.[e...5<..G1.@+
]
[正在存储f:\project\sslclienttwo.keystore]
为了方便记忆:口令也用alaric
6、从客户端密钥库导出数字证书
命令:keytool.exe -exportcert -v -alias sslsockettwo -file f:\project\sslsockettwo.cer -keystore f:\project\sslclienttwo.keystore
输入密钥库口令:
存储在文件
口令用alaric
7、将客户端数字证书导入到服务器的密钥库中
keytool.exe -importcert -v -alias sslsockettwocer -file f:\project\sslsockettwo.cer -keystore f:\project\sslsocketserver.keystore
输入密钥库口令:
再次输入新口令:
所有者: CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=zh
发布者: CN=zhang, OU=caituo, O=caituo, L=hz, ST=zj, C=zh
序列号: 5f7fe563
有效期开始日期: Sat May 25 21:29:44 CST 2013, 截止日期: Fri Aug 23 21:29:44 CST
2013
证书指纹:
MD5: 44:FF:75:9B:6E:63:D7:11:BA:79:A4:63:68:C4:F3:A9
SHA1: 0C:D8:55:C0:73:09:5B:D5:AD:84:21:91:C4:03:8D:06:BD:21:AB:05
SHA256: 28:5C:75:21:DA:2D:B6:1C:85:1F:1E:81:14:08:E6:27:7C:B2:D2:DE:92:
4D:8C:CD:AE:51:5B:3D:00:D2:B1:DF
签名算法名称: SHA256withRSA
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 69 9B C2 D5 0F B1 EF 7D 14 B1 2C 7C A6 6E 83 80 i.........,..n..
0010: AF 98 63 20 ..c
]
]
是否信任此证书? [否]: y
证书已添加到密钥库中
[正在存储f:\project\sslsocketserver.keystore]
这样就完成了所有的证书及其 keystore生成。
上面做的时候
证书信息可以随便写
名称也可以随便写
但是保持引用一直就可以了
参考地址:http://chrui.iteye.com/blog/1018786