56bd3b2ec686efe9b4b48200535ed883.ppt
- Количество слайдов: 46
Key and Certificate Management Using Keystores CS & AI Lab 2006 -08 -21 서대교 2006 -08 -21 1
Contents Key. Store Nested Classes and Interfaces The PKCS #12 Format The Keytool Jarsigning and Java Policy 2006 -08 -21 2
Key. Store Nested Classes and Interfaces Nested Class 클래스를 따로 선언하고 정의하기에는 간단하고 특정 클래스와 밀접 한 관계를 갖는 경우, 혹은 클래스로 정의해야 되지만 다른 클래스에 서는 사용하지 않고 특정 클래스 하나에서만 사용하는 경우, 특정 클 래스 내부에 중첩된 클래스로 생성 Key. Store The The 2006 -08 -21 Key. Store. Protection. Parameter Interface Key. Store. Entry Interface Key. Store. Load. Store. Parameter Interface Key. Store. Builder class 3
Key. Store Nested Classes and Interfaces Key. Store. Protection. Parameter Interface Key. Store 의 Protection. Parameter 를 위한 마커 인터페이스 Protection. Parameter 에 포함된 정보에 의해 Key. Store 내용이 보호 Key. Store. Callback. Handler. Protection Callback. Handler 받아서 새로운 Callback. Handler. Protection을 구축 get. Callback. Handler() Key. Store. Password. Protection Password 파라미터를 받아서 Protection. Parameter 객체에 포함 get. Password() destory() is. Destoryed() 2006 -08 -21 4
Key. Store Nested Classes and Interfaces Key. Store. Entry Interface Key. Store 종류에 대한 마커 인터페이스 Key. Store. get. Entry() Key. Store. set. Entry() Alias 에 일치하는 keystore 를 반환 Alias 의 이름으로 keystore 를 저장 Key. Store. entry. Instance. Of() Alias 와 keystore. entry 클래스가 동일하면 true, 아니면 false 2006 -08 -21 5
Key. Store Nested Classes and Interfaces Key. Store. Entry 를 구현하여 Key. Store 클래스에 중첩 Key. Store. Private. Key. Entry Key. Store. Secret. Key. Entry 개인키로 entry 를 만들고 chain 에 대응 get. Certificate() get. Certificate. Chain() get. Private. Key() 비밀키로 entry 를 생성 get. Secret. Key() Key. Store. Trusted. Certificate. Entry 신뢰할 수 있는 Certificate으로 Trusted. Certificate 을 생성 get. Trusted. Certificate() 2006 -08 -21 6
2006 -08 -21 7
2006 -08 -21 8
The Key. Store. Builder Class Key. Store 객체의 인스턴스화와 초기화에 필요한 정보를 캡슐화 Key. Store. Builder. get. Key. Store() Key. Store. Builder. get. Protection. Parameter() Key. Store 반환 Alias 가 사용한 Protection. Parameter 를 반환 Key. Store. Builder. new. Instance( keystore , protectionparameter ) 주어진 정보를 이용하여 builder 를 생성 The Key. Store. Load. Store. Parameter Interface Key. Store의 load() 와 store() 에 대한 마커인터페이스 get. Protection. Parameter() Keystore 의 protectionparameter 를 반환 2006 -08 -21 9
2006 -08 -21 10
The PKCS #12 Format PKCS( Public Key Cryptography Standard ) RSA 사에서 주관하고 있는 공개키 암호를 위한 표준으로 PKCS #1 에서 PKCS #15 까지 존재 비공식 표준 프로토콜 PKCS #12 ( Personal Information Exchange Syntax Standard ) 사용자의 개인 정보( Key, Certificate )를 전달하거나 교환하는 방법 을 설명 Privacy mode – password-based encryption( PBE ), public key encryption Integrity mode – HMAC based on a password and PBE, digital signature 2006 -08 -21 11
The PKCS #12 Format PFX 의 ASN. 1 형식 PFX( Personal in. Formation e. Xchange ) : PKCS#12 표준으로 모든 개인키, 공개키 및 인증서가 포함됨 Binary 형식으로 저장 2006 -08 -21 12
The PKCS #12 Format The Authenticated. Safe type The Safe. Bag type 2006 -08 -21 13
The PKCS #12 Format Authenticated Safe Contents MAC Data Safe Contents Safe Bag Safe Contents PFX Safe Bag Key Attributes or Certificate Attributes or Encrypted Key Attributes 2006 -08 -21 14
2006 -08 -21 15
The Keytool Key. Store 를 관리하기 위한 command-line tool 관리자 차원에서 키는 JRE 와 함께 제공되는 keytool 로 관리 키생성, 디지털 인증서 불러오기, 현존하는 키 저장 등 키 관리 시스 템에서 작업 Keytool command options 2006 -08 -21 16
2006 -08 -21 17
2006 -08 -21 18
2006 -08 -21 19
2006 -08 -21 20
2006 -08 -21 21
Jarsigning and Java Policy The Jarsigner JAR화일을 sign하고 사인된 jar화일의 서명을 검증 사인( sign ) Jarsigner options jar-file key_entry-alias 검증( verify ) Jarsigner –verify options jar-file 2006 -08 -21 22
Jarsigning and Java Policy Files policy configuration을 외부에서 조정할 수 있도록 하는 도구 시스템 정책 파일 시스템에 대한 모든 사용자의 권한을 규제 사용자 정책 파일 홈 디렉토리에 위치 사용자 정책 파일을 이용해서 그 시스템의 모든 사용자에게 주어진 권한 외에 특정한 사용자에게 추가적인 권한을 부가 시스템 정책 파일과 사용자 정책 파일은 결합되어서 효과를 획득 2006 -08 -21 23
Jarsigning and Java Policy 프로그램 정책 파일 프로그램 정책 파일은 어느 곳에나 위치 java 명령어가 실행될 때나 애플릿 뷰어에 의해서 애플릿이 실행될 때 특별히 이름이 지정 응용프로그램이나 애플릿이 특정한 보안 파일과 같이 실행될 때, 그 정책 파일에 있는 권한은 시스템 보안 파일이나 사용자 보안 파일에 지정된 권한을 대체 프로그램 정책 파일은 프로그램 테스팅과 응용 프로그램이나 애플릿의 인트라넷 배포를 위해서 사용 2006 -08 -21 24
Q&A 2006 -08 -21 25
Keytool 관리자 차원에서 키는 JRE와 함께 제공되는 keytool 유틸리티로 관리 키 생성, 디지털 인증서 불러오기, 현존하는 키 저장 등 키 관리 시스템에서 작업 Keytool에는 명령행 인터페이스만 있음 2006 -08 -21 26
Keytool의 전역 옵션 alias 작업이 적용되는 별명을 지정 예: -alias sdo, 기본값은 “mykey” dname distinguished. Name 구분되는 이름 지정 예: -dname “CN=Scott Oaks, OU=JSD, O=Sun Microsystems, L=NY, S=NY, C=US” keypassword 키 저장소를 보호하는데 사용하는 암호를 지정, 최소 6자 이상 keystore filename 키 저장소가 저장되어 있는 파일을 지정 기본값은 $Home/. keystore 2006 -08 -21 27
Keytool의 전역 옵션(계속) storepassword 특정 엔트리의 개인키를 보호하는 암호 storetype keytool이 작업하게 될 키 저장소의 타입을 지 정 V keytool이 현재 하고 있는 작업에 대한 상세한 정보를 출력 2006 -08 -21 28
Keytool에서 사용 가능한 명령어 키 엔트리 생성 인증서 요청 생성 인증서 불러오기 인증서 엔트리 생성 키 저장소 엔트리 변경 키 저장소 엔트리 삭제 키 저장소 데이터 보기 기타 명령어 넷스케이프 인증서 사용 2006 -08 -21 29
키 엔트리 생성 Genkey 키 쌍을 생성하고 그 엔트리를 키 저장소에 추가 전역 옵션 지원(alias, dname DN, keypass, keystore, storepass, storetype) keyalg Algorithm. Name : 키 쌍을 생성할 때 주어진 알고리즘을 사용, 기본값은 DSA keysize : 주어진 키 크기를 이용해서 키 쌍 생성기를 초 기화, 기본값은 1024 sigalg signature. Algorithm : 자체 서명된 인증서를 생성하는데 사용할 서명 알고리즘을 지정, 기본값은 SHA 1 with. DSA validity n. Days : 자체 서명된 인증서가 유효한 기간을 지정, 기본 값은 90일 2006 -08 -21 30
키 엔트리 생성(계속) 2006 -08 -21 31
인증서 요청 생성 생성한 키를 타인에게 보내려면 알려진 인증서 확인 자로부터 인증서를 받아와야 함 인증서 서명 요청(CSR)을 생성 CSR은 특정 별명에 해당하는 구별되는 이름, 공개 키를 포함하고 있으며, 별명의 개인키로 서명 인증서 확인자는 서명을 확인한 후에 공개키를 확인 해 주는 인증서를 배포 2006 -08 -21 32
인증서 요청 생성(계속) CSR 생성 명령어 Certreq : 인증서 서명 요청을 생성, 전역 옵션을 지원(alias, keypass, keystore, storepass, storetype, v) sigalg signature. Algorithm : CSR을 서명할 때 사용, 인증서 확인 자에서 처리할 수 있는 알고리즘으로 서명, 기본값은 별명이 소유 하고 있는 키의 타입에 따라 결정 File output. File : CSR을 저장, CSR의 형식은 PKCS#10에 정의, 기본적으로 CSR은 System. out으로 출력 2006 -08 -21 33
인증서 요청 생성(계속) –CSR 생성 예 -----BEGIN NEW CERTIFICATE REQUEST----MIIBoz. CCAQw. CAQAw. Yz. ELMAk. GA 1 UEBh. MCa 3 Ix. Dj. AMBg. NVBAg. TBXNlb 3 Vs. MREw. Dw. YDVQQHEwhub 3 dv bi 1 nd. TENMAs. GA 1 UECh. MEc 251 d. DELMAk. GA 1 UECx. MCY 3 Mx. FTATBg. NVBAMTDGlte. W 91 bmcgc 29 u. Zz. CB nz. ANBgkqhki. G 9 w 0 BAQEFAAOBj. QAwg. Yk. Cg. YEAv. D 2 A 4 rx. Yn 0 Is. Zzs. J 7 OJZOu. Fl+Ry 9 ewy 29 fc 08 D 5 r o 7 bpz. O 7 nto. O 6 RFykg. VPBe. O 0 k. M 302 J 2 CWBD 3 hr 2 W 86 CXEklvd. N 1 R 2 kq. P 43 e. QS/s. ZJk 4 l 1 X 4 p. Xrzx. R R 0 ZJmu. S 7 o+yb. F 0 WLg. Qlcen 46 pldi. Ue. Tq 4 PT 2 Yd. CAKh. PFUVg 6 TR 68 rl. UCAw. EAAa. AAMA 0 GCSq. GSIb 3 DQEBBAUAA 4 GBAHZ 4 ll 0 pvox 349 REky 6 j 7 fr. FTJzb. QYOqk 4 x. J 1 o. Epcc. FMn. CAsa. Bkcjk 9 m. Kin. Bk 2 Wm g. NSNb. LYW 772 m. Jzqz. RTBjolja+f 1 xi 4 lgyy. Q 3 QCt 25 Mueli. XB 1 WTe 2 o. Ft. W 2 ey. CYVXQn. St 2 ra 0 p 9 ZF n. RToow. Np. Hk. ER 4 OOc+e 8+5 iuyze. Gwo. Brs -----END NEW CERTIFICATE REQUEST----2006 -08 -21 34
인증서 불러오기 Import 새로운 인증서 엔트리를 생성 현존하는 키 엔트리에 해당하는 인증서 불러옴 전역 옵션을 지원 (alias, keypass, keystore, storepass, storetype, v) file input. File : 불러오는 인증서가 포함되어 있는 파 일을 지정, 인증서는 RFC 1421 형식 2006 -08 -21 system. in에서 데이터를 읽어들임 인증서 확인자에서 보낸 인증서 파일에는 인증서 체인이 있 음, 체인의 형식은 넷스케이프 인증서 체인 혹은 PKCS #7 인증서 체인 35
인증서 불러오기(계속) Noprompt : 인증서를 받아들이지에 대해서 묻지 않고 항상 설치 Trustcacerts : 인증서 확인자의 믿을 수 있는 인증서 를 읽어들임 키 저장소로 불러오는 예 piccolo% keytool –import –file sdo. cer –alias sdo -trustcacerts Enter keystore password : ****** Certificate reply was installed in keystore 2006 -08 -21 36
인증서 엔트리 생성 인증서 엔트리는 항상 존재하는 인증서를 불어오는 방식으로 생성 인증서는 알려진 인증서 확인자의 기초 인증서 혹은 정보를 교환할 타인을 확인해 주는 인증서 Piccolo% keytool –import –alias sdo –file fromsdo. cer Enter keystroe password: ****** Owner: Email. Address=scott. oaks@sun. com, CN=Thawte Freemail Member Issuer: CN=Personal Freemail RSA 2000. 8. 30, OU=Certificate Services, O=Thawte, L=Cape Town, ST=Western Cape, C=ZA Serial number: 3 df 48 Valid from: Thu Dec 28 22: 18: 19 EST 2000 until: Fri Dec 28 22: 18: 29 EST 2001 Certificate fingerprints: MD 5: BE: E 1: 5 C: ………………. . 72: 5 A SHA 1: 4 F: 22: 2 D……………DC: E 8: DD: 65: F 6: 45 Trust this certificate? [no]: yes Certificate was added to keystore 2006 -08 -21 37
키 저장소 엔트리 변경 키 저장소에서 인증서 엔트리는 변경안됨 필요시 현재있는 엔트리를 삭제하고 새로운 엔트리 를 추가 키 엔트리 안에 있는 데이터를 변경 selfcert : 인증서 체인 변경, CSR 생성 전역 옵션 지원(alias, dname DN, keypass, keystore, storepass, storetype) sigalg algorithm. Name : 자체 서명 인증서의 서명을 생성 validity n. Days : 자체 서명된 인증서가 유효한 기간을 지정, 기본값은 90 2006 -08 -21 38
키 저장소 엔트리 변경(계속) Keyclone : DN이 변경되기전 엔트리의 사본 생성 전역 옵션 지원(alias, keypass, keystore, storepass, storetype, v) dest new. Alias : 복사된 엔트리의 새로운 별명을 지 정 new. Password : 복사된 엔트리의 새로운 암호 지정 2006 -08 -21 39
키 저장소 엔트리 변경(계속) Keypasswd : 특정 키 엔트리의 암호 변경 전역 옵션 지원(alias, keystore, storepass store. Password, storetype, keypass original. Password) new. Password : 복사된 엔트리의 새로운 암호 지정 piccolo% keytool –keypasswd –alias sdo –storetype jceks 2006 -08 -21 40
키 저장소 엔트리 삭제 키 엔트리 혹은 인증서 엔트리를 삭제하는 명 령어 Delete : 지정된 별명의 엔트리 삭제 전역 옵션 지원(alias, keystore, storepass, storetype, v) 2006 -08 -21 41
키 저장소 데이터 보기 한 개 이상의 엔트리 출력 list : 키 저장소의 엔트리 나열 전역 옵션 지원(alias, keystore, storepass, storetype, v) rfc : RFC 1421 표준으로 보여줌 export : 지정한 별명의 인증서를 파일로 저장 전역 옵션 지원(alias, keystore, storepass, storetype, v) file output. File : 인증서를 저장할 파일 이름을 지정, 기본적으로 system. out으로 출력 Printcert : 인증서를 출력, 암호 없이 실행 가능 v file certificate. File : RFC 1421 형식의 인증서가 있는 파일 지정, 기 본적으로 systme. in에서 인증서 읽어들임 2006 -08 -21 42
키 저장소 데이터 보기(계속) 2006 -08 -21 43
키 저장소 데이터 보기(계속) 2006 -08 -21 44
기타 명령어 키 저장소의 전역 암호를 변경 storepasswd 전역 옵션 지원(keystore, storepass, storetype, v) new. Password : 키 저장소의 새로운 전역 암호 를 지정 help : keytool의 간단한 사용법을 출력 2006 -08 -21 45
넷스케이프 인증서 사용 넷스케이프에서 인증서를 저장 확장자는. p 12 키 저장소를 읽어들임 piccolo% keytool –list –keystore sdocer. p 12 –storetype pkcs 12 Enter keystore password : ****** Keystore type: pkcs 12 Keystore provider: Sun. JSSE Your keystore contains 1 entry: Scott oak’s verisign, inc. id, Sat Dec 30 18: 39: 54 EST 2000, key. Entry, Certificate fingerprint(MD 5): 4 D: 09: 1………. FB: 87: F 8 인증서를 저장하고 불러옴 2006 -08 -21 46


