java ssl 证书和keystore生成

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
输入 <sslsocket> 的密钥口令
        (如果和密钥库口令相同, 按回车):
密钥口令太短 - 至少必须为 6 个字符
输入 <sslsocket> 的密钥口令
        (如果和密钥库口令相同, 按回车):
新证书 (自签名):
[
[
  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
输入密钥库口令:
存储在文件 <f:\project\sslsocket.cer> 中的证书
这里的口令是上面的: 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
输入 <sslsockettwo> 的密钥口令
        (如果和密钥库口令相同, 按回车):
新证书 (自签名):
[
[
  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
输入密钥库口令:
存储在文件 <f:\project\sslsockettwo.cer> 中的证书
口令用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
 

你可能感兴趣的:(java,ssl)