|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요 : 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.security.cert.Certificate
java.security.cert.X509Certificate
public abstract class X509Certificate
X. 509 증명서의 abstract 클래스입니다. 이 클래스는, X. 509 증명서의 모든 속성에 액세스하기 위한 표준적인 방법을 제공합니다.
기본적인 X. 509 v3 형식은, 1996 년 6 월에 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 에 의해 서명되고 있습니다.
자세한 것은,http://www.ietf.org/rfc/rfc2459.txt 에 있는 RFC 2459 의 「Internet X. 509 Public Key Infrastructure Certificate and CRL Profile」를 참조해 주세요.
tbsCertificate
의 ASN. 1 정의는 다음과 같습니다.
TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version must be v2 or v3 subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version must be v2 or v3 extensions [3] EXPLICIT Extensions OPTIONAL -- If present, version must be v3 }
증명서의 인스턴스는, 증명서 팩토리를 사용해 생성됩니다. 이하의 예는 X. 509 증명서의 인스턴스를 생성하는 방법을 나타내고 있습니다.
InputStream inStream = new FileInputStream("fileName-of-cert"); CertificateFactory cf = CertificateFactory.getInstance("X. 509"); X509Certificate cert = (X509Certificate) cf.generateCertificate(inStream); inStream.close();
Certificate
,
CertificateFactory
,
X509Extension
,
직렬화 된 형식 상자의 클래스의 개요 |
---|
클래스 java.security.cert. Certificate 로부터 상속된 상자의 클래스/인터페이스 |
---|
Certificate.CertificateRep |
생성자 의 개요 | |
---|---|
protected |
X509Certificate ()
X. 509 증명서의 생성자 입니다. |
메소드의 개요 | |
---|---|
abstract void |
checkValidity ()
증명서가 현재 유효한지 어떤지를 판정합니다. |
abstract void |
checkValidity (Date date)
지정된 일자가, 증명서의 유효기간내일지 어떨지를 판정합니다. |
abstract int |
getBasicConstraints ()
위기인 BasicConstraints 확장 기능 (OID = 2.5. 29.19)로부터 증명서의 제약의 패스의 길이를 가져옵니다. |
List <String > |
getExtendedKeyUsage ()
확장열쇠 사용법의 확장 기능 (OID = 2.5. 29.37)에 있는 ExtKeyUsageSyntax 필드의 객체 식별자를 나타내는 변경 불가능한 String 의 리스트를 가져옵니다. |
Collection <List <? >> |
getIssuerAlternativeNames ()
IssuerAltName 확장 기능 (OID = 2.5. 29.18)으로부터, 발행자의 대체명의 불변인 컬렉션을 가져옵니다. |
abstract Principal |
getIssuerDN ()
비추천 getIssuerX500Principal() 로 옮겨놓을 수 있었습니다. |
abstract boolean[] |
getIssuerUniqueID ()
증명서로부터 issuerUniqueID 치를 가져옵니다. |
X500Principal |
getIssuerX500Principal ()
증명서로부터 발행자 (발행자의 식별명)의 값을 X500Principal 로서 돌려줍니다. |
abstract boolean[] |
getKeyUsage ()
KeyUsage 확장 기능 (OID = 2.5. 29.15)의 비트를 나타내는 boolean 배열을 가져옵니다. |
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 byte[] |
getSignature ()
증명서로부터 signature 치 (생의 시그니챠빗트)를 가져옵니다. |
Collection <List <? >> |
getSubjectAlternativeNames ()
SubjectAltName 확장 기능 (OID = 2.5. 29.17)으로부터, 피인증자의 대체명의 불변인 컬렉션을 가져옵니다. |
abstract Principal |
getSubjectDN ()
비추천 getSubjectX500Principal() 로 옮겨놓을 수 있었습니다. |
abstract boolean[] |
getSubjectUniqueID ()
증명서로부터 subjectUniqueID 치를 가져옵니다. |
X500Principal |
getSubjectX500Principal ()
증명서로부터 피인증자 (피인증자의 식별명)의 값을 X500Principal 로서 돌려줍니다. |
abstract byte[] |
getTBSCertificate ()
유효기간의 종료일 이 증명서로부터 DER 로 encode 된 인증 정보 tbsCertificate 를 가져옵니다. |
abstract int |
getVersion ()
증명서로부터 version (버젼 번호) 치를 가져옵니다. |
클래스 java.security.cert. Certificate 로부터 상속된 메소드 |
---|
equals , getEncoded , getPublicKey , getType , hashCode , toString , verify , verify , writeReplace |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , finalize , getClass , notify , notifyAll , wait , wait , wait |
인터페이스 java.security.cert. X509Extension 로부터 상속된 메소드 |
---|
getCriticalExtensionOIDs , getExtensionValue , getNonCriticalExtensionOIDs , hasUnsupportedCriticalExtension |
생성자 의 상세 |
---|
protected X509Certificate()
메소드의 상세 |
---|
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
를 구현 고유의 Principal 객체로서 돌려줍니다. 이식성이 있는 코드가 이러한 객체에 의존해야 하지는 않습니다.
증명서로부터 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
의 어떤 것인가입니다.
- 반환값:
- 이름이 발행자 식별명인 Principal
public X500Principal getIssuerX500Principal()
X500Principal
로서 돌려줍니다. 서브 클래스에서 이 메소드를 오버라이드(override) 하는 것을 추천합니다.
X500Principal
public abstract Principal getSubjectDN()
subject
를 구현 고유의 Principal 객체로서 돌려줍니다. 이식성이 있는 코드가 이러한 객체에 의존해야 하지는 않습니다.
증명서로부터 subject
(피인증자 식별명) 치를 가져옵니다. subject
의 값이 빈 상태(empty)의 경우, 반환되는 Principal
객체의 getName()
메소드는 빈 상태(empty)의 캐릭터 라인 ("")을 돌려줍니다.
ASN. 1 정의는 다음과 같습니다.
subject Name
Name
및 그 외의 관련하는 정의에 대해서는 getIssuerDN
를 참조해 주세요.
public X500Principal getSubjectX500Principal()
X500Principal
로서 돌려줍니다. 피인증자의 값이 빈 상태(empty)의 경우, 반환되는 X500Principal
객체의 getName()
메소드는 빈 상태(empty)의 캐릭터 라인 ("")을 돌려줍니다. 서브 클래스에서 이 메소드를 오버라이드(override) 하는 것을 추천합니다.
X500Principal
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 byte[] getTBSCertificate() throws CertificateEncodingException
tbsCertificate
를 가져옵니다. 이 정보는 서명을 개별적으로 검증하기 위해서 사용됩니다.
CertificateEncodingException
- encode 에러가 발생했을 경우public abstract byte[] getSignature()
signature
치 (생의 시그니챠빗트)를 가져옵니다. ASN. 1 정의는 다음과 같습니다.
signature BIT STRING
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()
AlgorithmParameters
를 사용해,getSigAlgName
에 의해 반환되는 이름을 사용해 인스턴스를 생성합니다.
관련하는 ASN. 1 정의에 대해서는,getSigAlgName
를 참조해 주세요.
public abstract boolean[] getIssuerUniqueID()
issuerUniqueID
치를 가져옵니다. 발행자 고유의 식별자는, 발행자명이 반복해 재사용될 가능성에 대처하기 위해서, 증명서에 정의되고 있습니다. RFC 2459 에서는, 이름을 재사용하지 않는 것, 및 준거하는 증명서가 일의의 식별자를 사용하지 않는 것을 추천 하고 있습니다. 그 프로파일에 준거하는 어플리케이션은, 일의의 식별자를 해석 및 비교할 수 있는 것이 필요합니다.
ASN. 1 정의는 다음과 같습니다.
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONALUniqueIdentifier ::= BIT STRING
public abstract boolean[] getSubjectUniqueID()
subjectUniqueID
치를 가져옵니다.
ASN. 1 정의는 다음과 같습니다.
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONALUniqueIdentifier ::= BIT STRING
public abstract boolean[] getKeyUsage()
KeyUsage
확장 기능 (OID = 2.5. 29.15)의 비트를 나타내는 boolean 배열을 가져옵니다. 열쇠 사용 목적의 확장 기능은, 증명서로 설정되어 있는 열쇠의 사용 목적 (암호용, 서명용, 증명서 서명용등)을 정의합니다. ASN. 1 정의는 다음과 같습니다.
KeyUsage ::= BIT STRING { digitalSignature (0), nonRepudiation (1), keyEncipherment (2), dataEncipherment (3), keyAgreement (4), keyCertSign (5), cRLSign (6), encipherOnly (7), decipherOnly (8) }RFC 2459 에서는, 이것을 사용하는 경우는 위기인 확장으로서 마킹 하는 것을 추천 하고 있습니다.
public List <String > getExtendedKeyUsage() throws CertificateParsingException
ExtKeyUsageSyntax
필드의 객체 식별자를 나타내는 변경 불가능한 String 의 리스트를 가져옵니다. 이것은, 열쇠 사용법의 확장 기능 필드에 나타나고 있는 기본적인 목적에 가세해, 혹은 그 기본적인 목적 대신에, 공개키가 사용되는 목적 (복수가능)을 나타냅니다. ASN. 1 정의는 다음과 같습니다.
ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId열쇠의 목적은, 요구에 맞추어 조직으로 정의합니다. 열쇠의 목적을 특정하는 객체 식별자는, IANA 또는 ITU-T 의 Rec. X. 660, 혹은 ISO/IEC/ITU 9834-1 에 따라 할당할 수 없으면 안됩니다.KeyPurposeId ::= OBJECT IDENTIFIER
이 메소드는, Java 2 Platform Standard Edition 의 버젼 1.4 로 추가되었습니다. 기존의 서비스 프로바이더와의 하위 호환성을 유지하기 위해서,abstract
에는 하지 못하고, 디폴트의 구현을 제공합니다. 서브 클래스는 올바른 구현으로 이 메소드를 오버라이드(override) 하지 않으면 안됩니다.
CertificateParsingException
- 확장 기능이 복호화 할 수 없었던 경우public abstract int getBasicConstraints()
BasicConstraints
확장 기능 (OID = 2.5. 29.19)로부터 증명서의 제약의 패스의 길이를 가져옵니다.
기본 제약 확장 기능은, 증명서의 피인증자가 증명서 발행국 (CA)일지 어떨지, 및 그 CA 의 증명서 패스의 깊이를 식별합니다.
RFC 2459 에서는,
ASN. 1 정의는 다음과 같습니다.
pathLenConstraint
필드 (아래와 같이를 참조)는,cA
가 TRUE 로 설정되어 있는 경우에만 유효합니다. 이 경우, 증명서 패스로 이 증명서의 후에 계속되는 CA 증명서의 최대수를 나타냅니다. 값 0 은, 엔드엔티티의 증명서 뿐인 것을 나타냅니다. cA
가 TRUE (이 증명서는 증명서 발행국의 것이다)의 경우는, 이 확장 기능은 항상 위기로서 마킹 됩니다.
BasicConstraints ::= SEQUENCE {
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER (0..MAX) OPTIONAL }
pathLenConstraint
의 값, 피인증자가 CA 로 pathLenConstraint
가 표시되지 않는 경우는, 증명서 패스의 길이에 제한이 없는 것이 가리키기 (위해)때문에 Integer.MAX_VALUE
가 반환된다
public Collection <List <? >> getSubjectAlternativeNames() throws CertificateParsingException
SubjectAltName
확장 기능 (OID = 2.5. 29.17)으로부터, 피인증자의 대체명의 불변인 컬렉션을 가져옵니다.
SubjectAltName
확장 기능의 ASN. 1 정의는 다음과 같습니다.
SubjectAltName ::= GeneralNames GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName GeneralName ::= CHOICE { otherName [0] OtherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, directoryName [4] Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER}
이 증명서에 SubjectAltName
확장 기능이 포함되지 않는 경우는,null
가 돌려주어집니다. 그렇지 않은 경우는, 확장 기능에 포함되는 각 GeneralName
를 나타내는 엔트리를 포함한 Collection
가 돌려주어집니다. 각 엔트리는 List
로, 이 List
의 최초의 엔트리는 Integer
(이름 타입, 0 ~ 8), 2 번째의 엔트리는 String
나 바이트 배열 (각각이 캐릭터 라인 형식 또는 ASN. 1 DER encode 형식의 이름)이 됩니다.
RFC 822, DNS, URI 의 각 이름은 String
로서 돌려주어집니다. 이 때, RFC 2459 에 포함되는 제한에 따라, 각각의 타입으로 명확하게 정의된 캐릭터 라인 형식이 이용됩니다. IPv4 주소명은 닷으로 4 개에 단락지어진 표기법으로 돌려주어집니다. IPv6 주소명은, 「a1:a2:...:a8」라고 하는 형식에서 돌려주어집니다. a1 ~ a8 는, 16 진수 표기로, 주소를 16 비트씩으로 8 개(살)로 분할하고 있습니다. OID명은, 피리어드로 단락지어진 부가 되지 않는 일련의 정수로 나타내지는 String
로서 돌려주어집니다. 디렉토리명 (식별명)은 RFC 2253 캐릭터 라인 형식으로서 돌려주어집니다. otherName, X. 400 명, EDI 상대명, 그 다른 타입의 이름에는, 표준의 캐릭터 라인 형식은 없습니다. 이름의 ASN. 1 DER encode 형식을 포함한 바이트 배열로서 돌려주어집니다.
반환되는 Collection
에는, 같은 타입으로 1 개 이상의 이름이 포함되어 있는 일이 있습니다. 또, 반환되는 Collection
는 불변이며, 바이트 배열을 포함한 엔트리는 모두 이후의 변경으로부터 보호하기 위해서 복제되고 있습니다.
이 메소드는, Java 2 Platform Standard Edition 의 버젼 1.4 로 추가되었습니다. 기존의 서비스 프로바이더와의 하위 호환성을 유지하기 위해서,abstract
에는 하지 못하고, 디폴트의 구현을 제공합니다. 서브 클래스는 올바른 구현으로 이 메소드를 오버라이드(override) 하지 않으면 안됩니다.
Collection
. 또는 null
CertificateParsingException
- 확장 기능이 복호화 할 수 없었던 경우public Collection <List <? >> getIssuerAlternativeNames() throws CertificateParsingException
IssuerAltName
확장 기능 (OID = 2.5. 29.18)으로부터, 발행자의 대체명의 불변인 컬렉션을 가져옵니다.
IssuerAltName
확장 기능의 ASN. 1 정의는 다음과 같습니다.
IssuerAltName ::= GeneralNames
GeneralNames
의 ASN. 1 정의는,getSubjectAlternativeNames
에 있습니다.
이 증명서에 IssuerAltName
확장 기능이 포함되지 않는 경우는,null
가 돌려주어집니다. 그렇지 않은 경우는, 확장 기능에 포함되는 각 GeneralName
를 나타내는 엔트리를 포함한 Collection
가 돌려주어집니다. 각 엔트리는 List
로, 이 List
의 최초의 엔트리는 Integer
(이름 타입, 0 ~ 8), 2 번째의 엔트리는 String
나 바이트 배열 (각각이 캐릭터 라인 형식 또는 ASN. 1 DER encode 형식의 이름)이 됩니다. 각각의 이름형으로 사용되는 형식의 상세한 것에 대하여는,getSubjectAlternativeNames
메소드를 참조해 주세요.
반환되는 Collection
에는, 같은 타입으로 1 개 이상의 이름이 포함되어 있는 일이 있습니다. 또, 반환되는 Collection
는 불변이며, 바이트 배열을 포함한 엔트리는 모두 이후의 변경으로부터 보호하기 위해서 복제되고 있습니다.
이 메소드는, Java 2 Platform Standard Edition 의 버젼 1.4 로 추가되었습니다. 기존의 서비스 프로바이더와의 하위 호환성을 유지하기 위해서,abstract
에는 하지 못하고, 디폴트의 구현을 제공합니다. 서브 클래스는 올바른 구현으로 이 메소드를 오버라이드(override) 하지 않으면 안됩니다.
Collection
. 또는 null
CertificateParsingException
- 확장 기능이 복호화 할 수 없었던 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요 : 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.