[컴] keytool 을 이용해서 keystore 만들기, 인증서 만들기, BSK format 으로 전환하기

키생성 / 키 생성 / 키 만들기 / keystore 만들기 / BSK format 으로 전환하기 / PEM / key format 변경


키 만들기


jdk 의 bin 으로 가서 keytool 을 이용하면 .keystore(키가 저장된 file) 을 만들수 있다.


c:\Program Files\Java\jdk1.7.0_25\bin>keytool -genkey -v -keystore f:\mytest.key
store -alias mykeystore -keyalg RSA -keysize 2048 -validity 10000
키 저장소 비밀번호 입력:
새 비밀번호 다시 입력:
이름과 성을 입력하십시오.
  [Unknown]:  name
조직 단위 이름을 입력하십시오.
  [Unknown]:
조직 이름을 입력하십시오.
  [Unknown]:
구/군/시 이름을 입력하십시오?
  [Unknown]:
시/도 이름을 입력하십시오.
  [Unknown]:
이 조직의 두 자리 국가 코드를 입력하십시오.
  [Unknown]:
CN=name, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown이(가) 맞습니까?

  [아니오]:  예

다음에 대해 유효 기간이 10,000일2,048비트 RSA 키 쌍 및 자체 서명된 인증서(SHA256withRSA)를 생성하는 중
        : CN=name, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
<mykeystore>에 대한 키 비밀번호를 입력하십시오.
        (키 저장소 비밀번호와 동일한 경우 Enter 키를 누름):
새 인증서(자체 서명):
[
[
  Version: V3
  Subject: CN=name, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun RSA public key, 2048 bits
  modulus: 194059191416352635504904866355038336587894871270164448105049719882045
32409690931315802242401364719379087620129427860202480522811431493805001848219287
33790737814668951036482785401338574971397966814187198361826464791611349704832895
21379625343729921084270550262269606664212368924064516901760337636594661594668010
17047682477296080081455062162067237574164790275431919878543444881735071223663920
29556856736919582769389371065852462482473473754949004640079181951309391923602032
28034887245203925920397108253755772719651029676714594382169531486753439128485299
26176211041400361804838310342464841925153961902189310894228491403551
  public exponent: 65537
  Validity: [From: Thu Oct 15 20:33:36 KST 2015,
               To: Mon Mar 02 20:33:36 KST 2043]
  Issuer: CN=name, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
  SerialNumber: [    55b2cac2]

Certificate Extensions: 1
[1]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 24 5B 93 E1 7B 1D F1 8E   0D D3 58 22 B3 4E 7C D0  $[........X".N..
0010: 37 51 C2 60                                        7Q.`
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: 50 D2 51 67 AE 72 69 A1   EB CD 4D EE 1A FD 3E CE  P.Qg.ri...M...>.
0010: 54 6C 82 1B 88 B8 59 E2   C7 7E 23 61 41 B3 50 7E  Tl....Y...#aA.P.
0020: 1F 17 40 F8 84 5C C5 F2   A1 F4 8F 4D E4 51 26 D3  ..@..\.....M.Q&.
0030: 12 54 1A AF 7F 77 A8 FB   86 8C 39 79 94 25 10 32  .T...w....9y.%.2
0040: BB D1 EE B6 08 3D 11 17   15 64 64 40 E8 27 CD CE  .....=...dd@.'..
0050: D5 15 80 94 13 E3 96 A7   95 B1 39 FC B7 A3 9B B0  ..........9.....
0060: D4 8A 2D 6E E7 28 46 4E   CB 20 00 3F E9 6F 6B 45  ..-n.(FN. .?.okE
0070: 28 45 CD 60 1E 11 1E 23   15 04 23 9D C2 00 CF CB  (E.`...#..#.....
0080: 75 2F 9B 9C 20 25 D9 48   86 FA 39 25 A8 D7 78 F7  u/.. %.H..9%..x.
0090: 01 1F 18 E6 84 F7 87 8E   FD 64 1B 6D DD BD A5 82  .........d.m....
00A0: 48 52 54 1E 0E D6 35 96   ED AB CE 7D A9 49 E6 92  HRT...5......I..
00B0: 3F E5 EE 20 72 BC 62 41   1D 79 C1 F3 1F 88 61 1B  ?.. r.bA.y....a.
00C0: DE BF 0F F4 56 29 DB AD   87 54 2F FC 4A 5F F8 C1  ....V)...T/.J_..
00D0: 06 89 46 61 3E FD 90 B2   CC 2D 1C BB E8 3F 49 41  ..Fa>....-...?IA
00E0: F7 19 8D 42 D2 92 49 87   BD 82 71 22 69 ED BD EE  ...B..I...q"i...
00F0: 39 3A 01 D3 55 CD CB 6B   B7 2B 84 61 F5 E3 46 0A  9:..U..k.+.a..F.

]
[f:\mytest.keystore을(를) 저장하는 중]

c:\Program Files\Java\jdk1.7.0_25\bin>


이번엔 기한 제한이나 비트를 명시하지 않은 keystore 를 만들어 보자.

c:\Program Files\Java\jdk1.7.0_25\bin>keytool -genkey -alias mykeystore -keyalg RSA -keypass changeit -storepass changeit -keystore mytest.keystore
이름과 성을 입력하십시오.
  [Unknown]:
조직 단위 이름을 입력하십시오.
  [Unknown]:
조직 이름을 입력하십시오.
  [Unknown]:
구/군/시 이름을 입력하십시오?
  [Unknown]:
시/도 이름을 입력하십시오.
  [Unknown]:
이 조직의 두 자리 국가 코드를 입력하십시오.
  [Unknown]:
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown이(가) 맞습니
까?
  [아니오]:  예


c:\Program Files\Java\jdk1.7.0_25\bin>


keystore 생성후, 인증서 저장

c:\Program Files\Java\jdk1.7.0_25\bin> keytool -export -alias mykeystore -storepass changeit -file f:\server.cer -keystore f:\mytest.keystore
인증서가 <f:\server.cer> 파일에 저장되었습니다.


인증서를 mytest.keystore 에 추가


c:\Program Files\Java\jdk1.7.0_25\bin>keytool -import -v -trustcacerts -alias keyAlias -file f:\server.cer -keystore f:\mytest.keystore -keypass changeit -storepass changeit
인증서가 <mykeystore> 별칭 아래의 키 저장소에 존재합니다.
추가하겠습니까? [아니오]:  예
인증서가 키 저장소에 추가되었습니다.
[f:\mytest.keystore을(를) 저장하는 중]



BSK 로 변환


portecle 을 사용해서 변환하자. 개인적으로 bouncycastle.org 에서 library 를 받아서 하는 작업은 실패했다.

jdk 1.7.0_25 의 keytool 을 이용하고,  bouncycastle.org 에서 다운로드 해서 bcprov-jdk16-146.jar 와 최신버전으로 시도 해 봤는데 둘 다 IOException 이 발생했다.

  • java.io.IOException: Wrong version of key store.


portecle

여하튼 여기 서 portecle 을 추천해서 사용 해 봤다.

portecle 을 다운로드 하고, 아래 명령어를 실행하면 된다.
c:\portecle> java -jar portecle.jar


File > Open Keystore File > .jsk keystore 선택


 Tools > Change Keystore Type > BKS 선택 > keystore 암호 입력


이제 성공적으로 변환 됐다. 이 녀석을 이제 저장하면 된다.








Reference

  1. keytool 유틸리티를 사용하여 인증서 생성 (Sun Java System Application Server 9.1 관리 설명서)






댓글 2개: