|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjavax.security.cert.Certificate
javax.security.cert.X509Certificate
public abstract class X509Certificate
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 증명서 클래스를 사용하도록 해 주세요.
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 |
생성자 의 상세 |
---|
public X509Certificate()
메소드의 상세 |
---|
public static final X509Certificate getInstance(InputStream inStream) throws CertificateException
inStream
로부터 읽어내진 데이터로 초기화합니다. 이 구현 (X509Certificate 는 abstract 클래스)은, 시큐리티 프로퍼티 파일로 cert.provider.x509v1
프로퍼티의 값으로 해서 지정한 클래스에 의해 제공됩니다.
주:1 개의 DER encode 증명서만이 입력 스트림인 것이 전제가 됩니다. 또, 모든 X509Certificate 서브 클래스에서는, 다음의 형식의 생성자 을 제공하지 않으면 안됩니다.
public <subClass>(InputStream inStream) ...
inStream
- 증명서를 초기화하기 위해서 읽어내지는 데이터를 보관 유지하는 입력 스트림
CertificateException
- 클래스의 초기화시, 또는 증명서의 해석시에 에러가 발생했을 경우public static final X509Certificate getInstance(byte[] certData) throws CertificateException
cert.provider.x509v1
프로퍼티의 값으로 해서 지정한 클래스에 의해 제공됩니다.
주:모든 X509Certificate 서브 클래스에서는, 다음의 형식의 생성자 을 제공할 필요가 있습니다.
public <subClass>(InputStream inStream) ...
certData
- DER 로 encode 된 증명서를 포함한 바이트 배열
certData
로부터의 데이터로 초기화된 X509Certificate 객체
CertificateException
- 클래스의 초기화시, 또는 증명서의 해석시에 에러가 발생했을 경우public abstract void checkValidity() throws CertificateExpiredException , CertificateNotYetValidException
유효기간은, 증명서가 유효한 최초의 일시와 마지막 일시의 2 개의 일시치로부터 완성됩니다. 이것은 ASN. 1 으로 다음과 같이 정의됩니다.
validity ValidityValidity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }
CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
CertificateExpiredException
- 증명서의 유효기간이 끊어져 있는 경우
CertificateNotYetValidException
- 증명서가 아직 유효하게 되지 않은 경우public abstract void checkValidity(Date date) throws CertificateExpiredException , CertificateNotYetValidException
date
- 지정된 일시에 이 증명서가 유효한지 어떤지를 조사하는 Date
CertificateExpiredException
- 지정된 date
에 증명서가 기한 마감이 되어 있는 경우
CertificateNotYetValidException
- 지정된 date
에 증명서가 아직 유효하게 되지 않은 경우checkValidity()
public abstract int getVersion()
version
(버젼 번호) 치를 가져옵니다. ASN. 1 정의는 다음과 같습니다.
version [0] EXPLICIT Version DEFAULT v1Version ::= INTEGER { v1(0), v2(1), v3(2) }
public abstract BigInteger getSerialNumber()
serialNumber
치를 가져옵니다. 시리얼 번호는, 증명서 발행국에 의해 각 증명서에 할당할 수 있는 정수치입니다. 시리얼 번호는, 지정된 CA 에 의해 발행된 각 증명서에 대해서 일의가 아니면 안됩니다. 즉, 발행자명과 시리얼 번호에 의해 일의의 증명서가 식별됩니다. ASN. 1 정의는 다음과 같습니다.
serialNumber CertificateSerialNumberCertificateSerialNumber ::= INTEGER
public abstract Principal getIssuerDN()
issuer
(발행자 식별명) 치를 가져옵니다. 발행자명은 증명서의 서명과 발행을 행한 엔티티를 식별합니다.
발행자명 필드에는, X. 500 식별명 (DN)이 포함됩니다. ASN. 1 정의는 다음과 같습니다.
issuer NameName ::= 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
의 어떤 것인가입니다.
public abstract Principal getSubjectDN()
subject
(피인증자 식별명) 치를 가져옵니다. ASN. 1 정의는 다음과 같습니다.
subject Name
Name
및 그 외의 관련하는 정의에 대해서는, getIssuerDN 를 참조해 주세요.
getIssuerDN()
public abstract Date getNotBefore()
notBefore
의 일자를 가져옵니다. 해당하는 ASN. 1 정의는 다음과 같습니다.
validity ValidityValidity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }
CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
checkValidity()
public abstract Date getNotAfter()
notAfter
의 일자를 가져옵니다. 해당하는 ASN. 1 정의에 대해서는,getNotBefore 을 참조해 주세요.
checkValidity()
public abstract String getSigAlgName()
signatureAlgorithm AlgorithmIdentifierAlgorithmIdentifier ::= 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 캐릭터 라인으로부터 판정됩니다.
public abstract String getSigAlgOID()
관련하는 ASN. 1 정의에 대해서는,getSigAlgName 를 참조해 주세요.
public abstract byte[] getSigAlgParams()
관련하는 ASN. 1 정의에 대해서는,getSigAlgName 를 참조해 주세요.
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.