ADT 코드 서명 옵션

ADT는 JCA(Java Cryptography Architecture)를 사용하여 AIR 응용 프로그램에 서명하는 데 필요한 개인 키 및 인증서에 액세스합니다. 서명 옵션은 키 저장소 및 키 저장소 내의 개인 키와 인증서를 식별합니다.

키 저장소에는 개인 키 및 연관된 인증서 체인이 모두 들어 있어야 합니다. 서명 인증서가 컴퓨터에 있는 신뢰할 수 있는 인증서에 체인으로 연결되어 있는 경우 인증서의 공용 이름 필드에 있는 내용이 AIR 설치 대화 상자에 제작자 이름으로 표시됩니다.

ADT에서는 x509v3 표준( RFC3280 )을 따르는 인증서를 필요로 하며 적절한 코드 서명 값을 사용하여 확장 키 사용 확장을 포함시킵니다. 인증서 내에 정의된 제약 조건을 준수하고 AIR 응용 프로그램에 서명할 일부 인증서 사용을 제외시킬 수 있습니다.

참고: ADT는 필요한 경우 인증서 해지 목록을 확인하고 타임스탬프를 가져오기 위해 Java 런타임 환경 프록시 설정을 사용하여 인터넷 리소스에 연결합니다. ADT 사용 시 이러한 인터넷 리소스에 연결하는 데 문제가 있어 네트워크에 특정 프록시 설정이 필요한 경우 JRE 프록시 설정을 구성해야 합니다.

AIR 서명 옵션 구문

서명 옵션은 다음 구문을 사용합니다(단일 명령줄임).

-alias aliasName 
-storetype type 
-keystore path 
-storepass password1 
-keypass password2 
-providerName className 
-tsa url

-alias 키 저장소에 있는 키의 별칭입니다. 키 저장소에 단 하나의 인증서만 들어 있을 때는 별칭을 지정할 필요가 없습니다. 별칭을 지정하지 않을 경우 ADT는 키 저장소의 첫 번째 키를 사용합니다.

모든 키 저장소 관리 응용 프로그램이 인증서에 대한 별칭 지정을 허용하는 것은 아닙니다. 예를 들어 Windows 시스템 키 저장소를 사용할 경우 인증서의 고유 이름을 별칭으로 사용합니다. 별칭을 확인할 수 있도록 Java Keytool 유틸리티를 사용하여 사용 가능한 인증서를 나열할 수 있습니다. 예를 들어 다음과 같은 명령을 실행합니다.

keytool -list -storetype Windows-MY

그러면 인증서에 대해 다음과 같은 출력이 생성됩니다.

CN=TestingCert,OU=QE,O=Adobe,C=US, PrivateKeyEntry, 
Certificate fingerprint (MD5): 73:D5:21:E9:8A:28:0A:AB:FD:1D:11:EA:BB:A7:55:88

ADT 명령줄에서 이 인증서를 참조하려면 별칭을 다음과 같이 설정합니다.

CN=TestingCert,OU=QE,O=Adobe,C=US

Mac OS X에서 키체인의 인증서 별칭은 키체인 접근 응용 프로그램에 표시된 이름입니다.

-storetype 키 저장소의 유형으로 키 저장소 구현 시 결정됩니다. 대부분의 Java 설치 시 포함되는 기본 키 저장소 구현은 JKS PKCS12 유형이 지원됩니다. Java 5.0에는 하드웨어 토큰에서 키 저장소에 액세스하기 위한 PKCS11 유형 및 Mac OS X 키체인에 액세스하기 위한 Keychain 유형에 대한 지원이 포함됩니다. Java 6.0에는 MSCAPI 유형에 대한 지원이 포함됩니다(Windows에서). 다른 JCA 공급자가 설치 및 구성되어 있는 경우 추가적인 키 저장소 유형을 사용할 수도 있습니다. 키 저장소 유형을 지정하지 않을 경우 기본 JCA 공급자에 대한 기본 유형이 사용됩니다.

저장소 유형

키 저장소 형식

최소 Java 버전

JKS

Java 키 저장소 파일(.keystore)

1.2

PKCS12

PKCS12 파일(.p12 또는 .pfx)

1.4

PKCS11

하드웨어 토큰

1.5

KeychainStore

Mac OS X 키체인

1.5

Windows-MY 또는 Windows-ROOT

MSCAPI

1.6

-keystore 파일 기반 저장소 유형을 위한 키 저장소 파일의 경로입니다.

-storepass 키 저장소에 액세스하는 데 필요한 암호입니다. 지정하지 않는 경우 ADT가 암호 입력을 요구합니다.

-keypass AIR 응용 프로그램 서명에 사용되는 개인 키에 액세스하는 데 필요한 암호입니다. 지정하지 않는 경우 ADT가 암호 입력을 요구합니다.

참고: 암호를 ADT 명령의 일부분으로 입력하는 경우 명령줄 작업 내역에 암호 문자가 저장됩니다. 따라서 인증서의 보안이 중요할 때는 -keypass 또는 -storepass 옵션을 사용하지 않는 것이 좋습니다. 또한 암호 옵션을 생략하면 같은 보안상의 이유로 인해 암호 프롬프트에 입력하는 문자가 표시되지 않습니다. 간단히 암호를 입력하고 Enter 키를 누르십시오.

-providerName 지정된 키 저장소 유형의 JCA 공급자입니다. 지정하지 않는 경우 ADT는 해당 유형의 키 저장소에 대한 기본 공급자를 사용합니다.

-tsa RFC3161 호환 타임스탬프 서버의 URL을 지정하여 디지털 서명에 타임스탬프를 포함시킵니다. URL을 지정하지 않으면 Geotrust가 제공한 기본 타임스탬프 서버가 사용됩니다. AIR 응용 프로그램의 서명에 타임스탬프가 포함되어 있을 경우 타임스탬프가 서명 시점에 인증서가 유효함을 확인한 것이므로 서명 인증서가 만료된 후에도 응용 프로그램을 설치할 수 있습니다.

ADT가 타임스탬프 서버에 연결되지 않으면 서명이 취소되고 패키지가 만들어지지 않습니다. 타임스탬프를 포함시키지 않으려면 - tsa none 을 지정합니다. 그러나 타임스탬프 없이 패키지화된 AIR 응용 프로그램은 서명 인증서가 만료된 후에는 더 이상 설치할 수 없습니다.

참고: 다수의 서명 옵션은 Java Keytool 유틸리티의 같은 옵션과 동일합니다. Windows에서는 Keytool 유틸리티를 사용하여 키 저장소를 검사 및 관리할 수 있습니다. Mac OS X의 경우 Apple® 보안 유틸리티를 사용할 수도 있습니다.

-provisioning-profile Apple iOS 프로비저닝 파일입니다. iOS 응용 프로그램을 패키지화할 때만 필요합니다.

서명 옵션 예제

.p12 파일을 사용한 서명:

-storetype pkcs12 -keystore cert.p12

기본 Java 키 저장소를 사용한 서명:

-alias AIRcert -storetype jks

특정 Java 키 저장소를 사용한 서명:

-alias AIRcert -storetype jks -keystore certStore.keystore

Mac OS X 키체인을 사용한 서명:

-alias AIRcert -storetype KeychainStore -providerName Apple

Windows 시스템 키 저장소를 사용한 서명:

-alias cn=AIRCert -storeype Windows-MY

하드웨어 토큰을 사용한 서명(토큰을 사용하도록 Java를 구성하는 방법 및 올바른 providerName 값은 토큰 제조업체의 지침 참조):

-alias AIRCert -storetype pkcs11 -providerName tokenProviderName

타임스탬프를 포함하지 않는 서명:

-storetype pkcs12 -keystore cert.p12 -tsa none