基本的な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();
 
 OR
 byte[] certData = <certificate read from a file, say> X509Certificate cert = X509Certificate.getInstance(certData);
 どちらの場合も、X.509証明書をインスタンス化するコードは、実際の実装を特定したりデフォルト実装で初期化したりするのに、cert.provider.x509v1セキュリティ・プロパティの値を使用します。
 
 cert.provider.x509v1プロパティは次のように、X.509用のデフォルト実装に設定されています。
 
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
- 関連項目:
- 
コンストラクタのサマリーコンストラクタ
- 
メソッドのサマリー修飾子と型メソッド説明abstract void削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書が現在有効であるかどうかを判定します。abstract voidcheckValidity(Date date) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。指定された日付が、証明書の有効期間内であるかどうかを判定します。static final X509CertificategetInstance(byte[] certData) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。X509Certificateオブジェクトをインスタンス化し、指定したバイト配列で初期化します。static final X509CertificategetInstance(InputStream inStream) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。X509Certificateオブジェクトをインスタンス化し、入力ストリームinStreamから読み取られたデータで初期化します。abstract Principal削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書からissuer(発行者識別名)値を取得します。abstract Date削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書の有効期間からnotAfterの日付を取得します。abstract Date削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書の有効期間からnotBeforeの日付を取得します。abstract BigInteger削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書からserialNumber値を取得します。abstract String削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書の署名アルゴリズム名を取得します。abstract String削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書から署名アルゴリズムのOID文字列を取得します。abstract byte[]削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。この証明書の署名アルゴリズムから、DERでエンコードされた署名アルゴリズム・パラメータを取得します。abstract Principal削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書からsubject(サブジェクト識別名)値を取得します。abstract int削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書からversion(バージョン番号)値を取得します。クラス javax.security.cert.Certificateで宣言されたメソッドequals, getEncoded, getPublicKey, hashCode, toString, verify, verify
- 
コンストラクタの詳細- 
X509Certificatepublic X509Certificate()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。サブクラスが呼び出すためのコンストラクタ。
 
- 
- 
メソッドの詳細- 
getInstancepublic static final X509Certificate getInstance(InputStream inStream) throws CertificateException 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。X509Certificateオブジェクトをインスタンス化し、入力ストリームinStreamから読み取られたデータで初期化します。 この実装(X509Certificateは抽象クラス)は、cert.provider.x509v1セキュリティ・プロパティの値として指定したクラスによって提供されます。ノート: 1つのDERでエンコードされた証明書だけが入力ストリームであることが前提となります。 また、すべてのX509Certificateサブクラスでは、次の形式のコンストラクタを提供しなければいけません。 public <subClass>(InputStream inStream) ...- パラメータ:
- inStream- 証明書を初期化するために読み取られるデータを保持する入力ストリーム。
- 戻り値:
- 入力ストリームからのデータで初期化されたX509Certificateオブジェクト。
- throws:
- CertificateException- クラスの初期化時、または証明書の解析時にエラーが発生した場合。
 
- 
getInstancepublic static final X509Certificate getInstance(byte[] certData) throws CertificateException 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。X509Certificateオブジェクトをインスタンス化し、指定したバイト配列で初期化します。 この実装(X509Certificateは抽象クラス)は、cert.provider.x509v1セキュリティ・プロパティの値として指定したクラスによって提供されます。ノート: すべてのX509Certificateサブクラスでは、次の形式のコンストラクタを提供する必要があります。 public <subClass>(InputStream inStream) ...- パラメータ:
- certData- DERでエンコードされた証明書を含むバイト配列。
- 戻り値:
- certDataからのデータで初期化されたX509Certificateオブジェクト。
- throws:
- CertificateException- クラスの初期化時、または証明書の解析時にエラーが発生した場合。
 
- 
checkValiditypublic abstract void checkValidity() throws CertificateExpiredException, CertificateNotYetValidException削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書が現在有効であるかどうかを判定します。 現在の日時が、証明書で指定された有効期間内であるかどうかを調べます。有効期間は、証明書が有効である最初の日時と最後の日時の2つの日時値から成ります。 これはASN.1で次のように定義されます。 validity Validity Validity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate } CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }- throws:
- CertificateExpiredException- 証明書の有効期限が切れている場合。
- CertificateNotYetValidException- 証明書がまだ有効になっていない場合。
 
- 
checkValiditypublic abstract void checkValidity(Date date) throws CertificateExpiredException, CertificateNotYetValidException 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。指定された日付が、証明書の有効期間内であるかどうかを判定します。 つまり、指定された日時に証明書が有効であるかどうかを調べます。- パラメータ:
- date- 指定された日時にこの証明書が有効であるかどうかを調べるDate。
- throws:
- CertificateExpiredException- 指定された- dateに証明書が期限切れになっている場合。
- CertificateNotYetValidException- 指定された- dateに証明書がまだ有効になっていない場合。
- 関連項目:
 
- 
getVersionpublic abstract int getVersion()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書からversion(バージョン番号)値を取得します。 ASN.1定義は次のとおりです。version [0] EXPLICIT Version DEFAULT v1 Version ::= INTEGER { v1(0), v2(1), v3(2) }- 戻り値:
- ASN.1エンコーディングによるバージョン番号(0、1または2)。
 
- 
getSerialNumberpublic abstract BigInteger getSerialNumber()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書からserialNumber値を取得します。 シリアル番号は、証明書発行局によって各証明書に割り当てられる整数値です。 シリアル番号は、指定されたCAによって発行された各証明書に対して一意である必要があります。つまり、発行者名とシリアル番号によって一意の証明書が識別されます。 ASN.1定義は次のとおりです。serialNumber CertificateSerialNumber CertificateSerialNumber ::= INTEGER - 戻り値:
- シリアル番号
 
- 
getIssuerDNpublic abstract Principal getIssuerDN()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書から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 ::= ANYNameには、国名などの属性とそれに対応する、USなどの値からなる階層的な名前を記述します。AttributeValueコンポーネントの型は、AttributeTypeによって決まります。一般的には、directoryStringです。directoryStringは、通常PrintableString、TeletexString、UniversalStringのいずれかです。- 戻り値:
- 名前が発行者識別名であるPrincipal。
 
- 
getSubjectDNpublic abstract Principal getSubjectDN()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書からsubject(サブジェクト識別名)値を取得します。 ASN.1定義は次のとおりです。subject Name Nameおよびその他の関連する定義については、getIssuerDNを参照してください。- 戻り値:
- 名前がサブジェクト名であるPrincipal。
- 関連項目:
 
- 
getNotBeforepublic abstract Date getNotBefore()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書の有効期間からnotBeforeの日付を取得します。 該当するASN.1定義は次のとおりです。validity Validity Validity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate } CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }- 戻り値:
- 有効期間の開始日。
- 関連項目:
 
- 
getNotAfterpublic abstract Date getNotAfter()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書の有効期間からnotAfterの日付を取得します。 該当するASN.1定義については、getNotBeforeを参照してください。- 戻り値:
- 有効期間の終了日。
- 関連項目:
 
- 
getSigAlgNamepublic abstract String getSigAlgName()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書の署名アルゴリズム名を取得します。 たとえば、文字列「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アルゴリズム名は algorithmOID文字列から判定されます。- 戻り値:
- 署名アルゴリズム名。
 
- 
getSigAlgOIDpublic abstract String getSigAlgOID()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。証明書から署名アルゴリズムのOID文字列を取得します。 OIDはピリオドで区切られた正の整数のセットで表されます。 たとえば、文字列「1.2.840.10040.4.3」では、DSA署名アルゴリズムを持つSHA-1が識別されます(PKIXパートIを参照)。該当するASN.1定義については、 getSigAlgNameを参照してください。- 戻り値:
- 署名アルゴリズムのOID文字列。
 
- 
getSigAlgParamspublic abstract byte[] getSigAlgParams()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。この証明書の署名アルゴリズムから、DERでエンコードされた署名アルゴリズム・パラメータを取得します。 ほとんどの場合、署名アルゴリズム・パラメータはnullで、通常は証明書の公開キーとともに提供されます。該当するASN.1定義については、 getSigAlgNameを参照してください。- 戻り値:
- DERでエンコードされた署名アルゴリズム・パラメータ。パラメータが存在しない場合はnull。
 
 
- 
java.security.certのクラスを使用してください。