X509Certificate — X.509 v1 인증서
X509Certificate — X.509 v1 인증서 (추상 클래스)
X509Certificate는 X.509 v1 인증서를 위한 추상 클래스예요. X.509 인증서의 모든 버전 1 속성에 접근하는 표준 방법을 제공해요. X.509 v2 또는 v3에 특화된 속성은 이 인터페이스로는 사용할 수 없어요. 향후 API 진화에서 완전한 X.509 v3 속성에 대한 전체 접근이 제공될 예정이에요.
본문
@Deprecated(since = "9", forRemoval = true)
public abstract class X509Certificate extends Certificate
Deprecated 안내
이 클래스는 java.security.cert의 클래스들을 대신 사용해요. javax.security.cert 패키지는 이전 JSSE 버전과의 호환성을 위해 존재하며, 새 애플리케이션은 java.security.cert의 Java SE 인증서 클래스를 사용해야 해요.
X.509 형식이란?
기본 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)이 있어요.
이 인증서들은 Certificate Authorities(CAs)에 의해 관리·보증돼요. CA는 데이터를 X.509 표준 형식으로 배치한 다음 그 데이터에 디지털 서명함으로써 인증서를 만드는 서비스예요. CA는 서로를 직접 알지 못하는 주체들 사이에서 신뢰할 수 있는 제3자로 작동하며 소개를 해줘요. CA 인증서는 스스로 서명되거나, "root" 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();
// OR
byte[] certData = <certificate read from a file, say>
X509Certificate cert = X509Certificate.getInstance(certData);
어느 경우든 X.509 인증서를 인스턴스화하는 코드는 cert.provider.x509v1 보안 속성 값을 참조해 실제 구현을 찾거나, 기본 구현을 인스턴스화해요.
이 클래스의 역할
Certificate를 상속받아 X.509 v1 인증서의 공개 키, 인코딩, 검증 기능을 제공하고, X.509 전용 메서드들로 확장해요. getSubjectX500Principal, getIssuerX500Principal, getSerialNumber, getNotBefore, getNotAfter, verify 같은 개념을 담고 있어요. 구체적인 메서드 시그니처는 공식 API 문서를 참고해요.