JavaTM Platform
Standard Ed. 6

javax.security.cert
클래스 X509Certificate

java.lang.Object 
  상위를 확장 javax.security.cert.Certificate 
      상위를 확장 javax.security.cert.X509Certificate


public abstract class X509Certificate
extends Certificate

X. 509 v1 증명서의 abstract 클래스입니다. X. 509 증명서의 버젼 1 의 속성에 액세스 하는 표준적인 방법을 제공합니다. X. 509 의 v2 나 v3 에 고유의 속성은, 이 인터페이스를 통해서는 이용할 수 없습니다. 장래의 API 전개에서는, 완전한 X. 509 v3 속성에의 풀 액세스를 제공합니다.  

기본적인 X. 509 형식은, ISO/IEC 및 ANSI X9 에 의해 책정되어 이하와 같이 ASN. 1 으로 기술됩니다.

 Certificate  ::=  SEQUENCE  {
     tbsCertificate       TBSCertificate,
     signatureAlgorithm   AlgorithmIdentifier,
     signature            BIT STRING  }
 

이러한 증명서는, 인터넷의 시큐리티 시스템으로 인증등의 기능을 지원하기 위해서 넓게 사용되고 있습니다. 대표적인 어플리케이션에는, Privacy Enhanced Mail (PEM), Transport Layer Security (SSL), 신뢰할 수 있는 소프트웨어 배포를 위한 코드 서명, 및 Secure Electronic Transactions (SET)등이 있습니다.  

이러한 증명서는, 「증명서 발행국 (CA)」에 의해 관리 및 보증되고 있습니다. CA 는, 데이터를 X. 509 표준 형식으로 하고 나서, 그 데이터에 디지털 서명 하는 것으로써 증명서를 작성하는 서비스입니다. CA 는 신뢰할 수 있는 제삼자로서 기능해, 직접은 안면이 없는 주체끼리를 소개합니다. CA 증명서는, 그 CA 자신으로, 또는 「루트」CA 등의 다른 CA 에 의해 서명되고 있습니다.  

tbsCertificate 의 ASN. 1 정의는 다음과 같습니다.

 TBSCertificate  ::=  SEQUENCE  {
     version         [0]  EXPLICIT Version DEFAULT v1,
     serialNumber         CertificateSerialNumber,
     signature            AlgorithmIdentifier,
     issuer               Name,
     validity             Validity,
     subject              Name,
     subjectPublicKeyInfo SubjectPublicKeyInfo,
     }
 

X. 509 증명서를 인스턴스화하는 코딩예를 나타냅니다.

 
 InputStream inStream = new FileInputStream("fileName-of-cert");
 X509Certificate cert = X509Certificate.getInstance(inStream);
 inStream.close();
 
또는
 byte[] certData = <파일로부터 읽히는 증명서 >
 X509Certificate cert = X509Certificate.getInstance(certData);
 

어느 쪽의 경우도, X. 509 증명서를 인스턴스화하는 코드는, 실제의 구현을 특정하거나 디폴트 구현으로 초기화하거나 하는데 Java 시큐리티 프로퍼티 파일을 사용합니다.  

Java 시큐리티 프로퍼티 파일은, <JAVA_HOME>/lib/security/java.security 라는 이름의 파일에 포함되고 있습니다. <JAVA_HOME> 는 java.home 시스템 프로퍼티의 값을 참조하고 있어, JRE 의 인스톨 디렉토리를 나타냅니다. 시큐리티 프로퍼티 파일에서는, X. 509 v1 의 디폴트 구현이 다음과 같이 정의됩니다.

 cert.provider.x509v1=com.sun.security.cert.internal.x509.X509V1CertImpl
 

다른 구현을 인스턴스화할 때는, 이 cert.provider.x509v1 프로퍼티의 값을 변경할 필요가 있습니다. 이 프로퍼티 파일이 설정되어 있지 않은 경우는, 디폴트 구현이 사용됩니다. 현재로서는, 시큐리티 프로퍼티에 액세스 하는데 시큐리티 제한이 있을 우려가 있기 (위해)때문에, 이 값은 클래스가 초기화될 때 조사, 캐쉬되어 시큐리티 프로퍼티에 액세스 할 수 없는 경우는 디폴트 구현이 대신에 사용됩니다.

주:패키지 javax.security.cert 의 클래스는, 구버젼의 Java Secure Sockets Extension (JSSE)와의 호환성을 위해서(때문에) 존재합니다. 신규 어플리케이션의 경우, 이 클래스는 아니고,java.security.cert 에 있는 표준 Java SE 증명서 클래스를 사용하도록 해 주세요.

도입된 버젼:
1.4
관련 항목:
Certificate , X509Extension

생성자 의 개요
X509Certificate ()
           
 
메소드의 개요
abstract  void checkValidity ()
          증명서가 현재 유효한지 어떤지를 판정합니다.
abstract  void checkValidity (Date  date)
          지정된 일자가, 증명서의 유효기간내일지 어떨지를 판정합니다.
static X509Certificate getInstance (byte[] certData)
          X509Certificate 객체를 인스턴스화해, 지정한 바이트 배열로 초기화합니다.
static X509Certificate getInstance (InputStream  inStream)
          X509Certificate 객체를 인스턴스화해, 입력 스트림 inStream 로부터 읽어내진 데이터로 초기화합니다.
abstract  Principal getIssuerDN ()
          증명서로부터 issuer (발행자 식별명) 치를 가져옵니다.
abstract  Date getNotAfter ()
          증명서의 유효기간으로부터 notAfter 의 일자를 가져옵니다.
abstract  Date getNotBefore ()
          증명서의 유효기간으로부터 notBefore 의 일자를 가져옵니다.
abstract  BigInteger getSerialNumber ()
          증명서로부터 serialNumber 치를 가져옵니다.
abstract  String getSigAlgName ()
          증명서의 서명 알고리즘명을 가져옵니다.
abstract  String getSigAlgOID ()
          증명서로부터 서명 알고리즘의 OID 캐릭터 라인을 가져옵니다.
abstract  byte[] getSigAlgParams ()
          이 증명서의 서명 알고리즘으로부터, DER 로 encode 된 서명 알고리즘 파라미터를 가져옵니다.
abstract  Principal getSubjectDN ()
          증명서로부터 subject (피인증자 식별명) 치를 가져옵니다.
abstract  int getVersion ()
          증명서로부터 version (버젼 번호) 치를 가져옵니다.
 
클래스 javax.security.cert. Certificate 로부터 상속된 메소드
equals , getEncoded , getPublicKey , hashCode , toString , verify , verify
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , finalize , getClass , notify , notifyAll , wait , wait , wait
 

생성자 의 상세

X509Certificate

public X509Certificate()
메소드의 상세

getInstance

public static final X509Certificate  getInstance(InputStream  inStream)
                                         throws CertificateException 
X509Certificate 객체를 인스턴스화해, 입력 스트림 inStream 로부터 읽어내진 데이터로 초기화합니다. 이 구현 (X509Certificate 는 abstract 클래스)은, 시큐리티 프로퍼티 파일로 cert.provider.x509v1 프로퍼티의 값으로 해서 지정한 클래스에 의해 제공됩니다.

주:1 개의 DER encode 증명서만이 입력 스트림인 것이 전제가 됩니다. 또, 모든 X509Certificate 서브 클래스에서는, 다음의 형식의 생성자 을 제공하지 않으면 안됩니다.

 public <subClass>(InputStream inStream) ...
 

파라미터:
inStream - 증명서를 초기화하기 위해서 읽어내지는 데이터를 보관 유지하는 입력 스트림
반환값:
입력 스트림로부터의 데이터로 초기화된 X509Certificate 객체
예외:
CertificateException - 클래스의 초기화시, 또는 증명서의 해석시에 에러가 발생했을 경우

getInstance

public static final X509Certificate  getInstance(byte[] certData)
                                         throws CertificateException 
X509Certificate 객체를 인스턴스화해, 지정한 바이트 배열로 초기화합니다. 이 구현 (X509Certificate 는 abstract 클래스)은, 시큐리티 프로퍼티 파일로 cert.provider.x509v1 프로퍼티의 값으로 해서 지정한 클래스에 의해 제공됩니다.

주:모든 X509Certificate 서브 클래스에서는, 다음의 형식의 생성자 을 제공할 필요가 있습니다.

 public <subClass>(InputStream inStream) ...
 

파라미터:
certData - DER 로 encode 된 증명서를 포함한 바이트 배열
반환값:
certData 로부터의 데이터로 초기화된 X509Certificate 객체
예외:
CertificateException - 클래스의 초기화시, 또는 증명서의 해석시에 에러가 발생했을 경우

checkValidity

public abstract void checkValidity()
                            throws CertificateExpiredException ,
                                   CertificateNotYetValidException 
증명서가 현재 유효한지 어떤지를 판정합니다. 현재의 일시가, 증명서로 지정된 유효기간내일지 어떨지를 조사합니다.  

유효기간은, 증명서가 유효한 최초의 일시와 마지막 일시의 2 개의 일시치로부터 완성됩니다. 이것은 ASN. 1 으로 다음과 같이 정의됩니다.

 validity             Validity

Validity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }

CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }

예외:
CertificateExpiredException - 증명서의 유효기간이 끊어져 있는 경우
CertificateNotYetValidException - 증명서가 아직 유효하게 되지 않은 경우

checkValidity

public abstract void checkValidity(Date  date)
                            throws CertificateExpiredException ,
                                   CertificateNotYetValidException 
지정된 일자가, 증명서의 유효기간내일지 어떨지를 판정합니다. 즉, 지정된 일시에 증명서가 유효한지 어떤지를 조사합니다.

파라미터:
date - 지정된 일시에 이 증명서가 유효한지 어떤지를 조사하는 Date
예외:
CertificateExpiredException - 지정된 date 에 증명서가 기한 마감이 되어 있는 경우
CertificateNotYetValidException - 지정된 date 에 증명서가 아직 유효하게 되지 않은 경우
관련 항목:
checkValidity()

getVersion

public abstract int getVersion()
증명서로부터 version (버젼 번호) 치를 가져옵니다. ASN. 1 정의는 다음과 같습니다.
 version         [0]  EXPLICIT Version DEFAULT v1

Version ::= INTEGER { v1(0), v2(1), v3(2) }

반환값:
ASN. 1 encode에 의한 버젼 번호 (0, 1 또는 2)

getSerialNumber

public abstract BigInteger  getSerialNumber()
증명서로부터 serialNumber 치를 가져옵니다. 시리얼 번호는, 증명서 발행국에 의해 각 증명서에 할당할 수 있는 정수치입니다. 시리얼 번호는, 지정된 CA 에 의해 발행된 각 증명서에 대해서 일의가 아니면 안됩니다. 즉, 발행자명과 시리얼 번호에 의해 일의의 증명서가 식별됩니다. ASN. 1 정의는 다음과 같습니다.
 serialNumber     CertificateSerialNumber

CertificateSerialNumber ::= INTEGER

반환값:
시리얼 번호

getIssuerDN

public abstract Principal  getIssuerDN()
증명서로부터 issuer (발행자 식별명) 치를 가져옵니다. 발행자명은 증명서의 서명과 발행을 행한 엔티티를 식별합니다.

발행자명 필드에는, X. 500 식별명 (DN)이 포함됩니다. ASN. 1 정의는 다음과 같습니다.

 issuer    Name

Name ::= CHOICE { RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName ::= SET OF AttributeValueAssertion AttributeValueAssertion ::= SEQUENCE { AttributeType, AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY

Name 에는, 국명등의 속성과 거기에 대응하는, US 등의 값으로부터 되는 계층적인 이름을 기술합니다. AttributeValue 컴퍼넌트의 형태는,AttributeType 에 의해 정해집니다. 일반적으로는,directoryString 입니다. directoryString 은, 일반적으로 PrintableString,TeletexString,UniversalString 의 어떤 것인가입니다.

반환값:
이름이 발행자 식별명인 Principal

getSubjectDN

public abstract Principal  getSubjectDN()
증명서로부터 subject (피인증자 식별명) 치를 가져옵니다. ASN. 1 정의는 다음과 같습니다.
 subject    Name
 

Name 및 그 외의 관련하는 정의에 대해서는, getIssuerDN 를 참조해 주세요.

반환값:
이름이 피인증자 식별명인 Principal
관련 항목:
getIssuerDN()

getNotBefore

public abstract Date  getNotBefore()
증명서의 유효기간으로부터 notBefore 의 일자를 가져옵니다. 해당하는 ASN. 1 정의는 다음과 같습니다.
 validity             Validity

Validity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }

CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }

반환값:
유효기간의 개시일
관련 항목:
checkValidity()

getNotAfter

public abstract Date  getNotAfter()
증명서의 유효기간으로부터 notAfter 의 일자를 가져옵니다. 해당하는 ASN. 1 정의에 대해서는,getNotBefore 을 참조해 주세요.

반환값:
유효기간의 종료일
관련 항목:
checkValidity()

getSigAlgName

public abstract String  getSigAlgName()
증명서의 서명 알고리즘명을 가져옵니다. 예를 들어, 캐릭터 라인 「SHA-1/DSA」 등입니다. ASN. 1 정의는 다음과 같습니다.
 signatureAlgorithm   AlgorithmIdentifier

AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL } -- contains a value of the type -- registered for use with the -- algorithm object identifier value

알고리즘명은 algorithm OID 캐릭터 라인으로부터 판정됩니다.

반환값:
서명 알고리즘명

getSigAlgOID

public abstract String  getSigAlgOID()
증명서로부터 서명 알고리즘의 OID 캐릭터 라인을 가져옵니다. OID 는 피리어드로 단락지어진 정의 정수세트로 나타내집니다. 예를 들어, 캐릭터 라인 「1.2. 840.10040. 4.3」에서는, DSA 서명 알고리즘을 가지는 SHA-1 가 식별됩니다 (PKIX 파트 I 를 참조).

관련하는 ASN. 1 정의에 대해서는,getSigAlgName 를 참조해 주세요.

반환값:
서명 알고리즘의 OID 캐릭터 라인

getSigAlgParams

public abstract byte[] getSigAlgParams()
이 증명서의 서명 알고리즘으로부터, DER 로 encode 된 서명 알고리즘 파라미터를 가져옵니다. 대부분의 경우, 서명 알고리즘 파라미터는 null 로, 일반적으로은 증명서의 공개키와 함께 제공됩니다.

관련하는 ASN. 1 정의에 대해서는,getSigAlgName 를 참조해 주세요.

반환값:
DER 로 encode 된 서명 알고리즘 파라미터. 파라미터가 존재하지 않는 경우는 null

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.