키 만들기
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
Tools > Change Keystore Type > BKS 선택 > keystore 암호 입력
이제 성공적으로 변환 됐다. 이 녀석을 이제 저장하면 된다.
작성자가 댓글을 삭제했습니다.
답글삭제좋은 자료 감사합니다.~
답글삭제