重要: 本書で説明する API および機能は、変更される場合があります。
1. はじめに
このドキュメントでは、J2SE 5.0 の PKI
拡張機能と、その使用方法について説明します。この拡張機能に対するフィードバックは、java-security@sun.com
までお送りください。
Java 2 プラットフォームのバージョン 5.0 では、次の PKI 拡張機能が提供されます。
プロパティの名前 説明 ocsp.enable このプロパティの値は、true または false になる。true の場合、OCSP チェックは証明書取り消しチェックの実行中に有効になる。false または設定されていない場合、OCSP チェックは無効になる ocsp.responderURL このプロパティの値は、OCSP 応答者の場所を特定する URL である。次に例を示す ocsp.responderURL=http://ocsp.example.net:80デフォルトでは、OCSP 応答者の場所は、検証される証明書から暗黙的に決定される。RFC 3280 に定義されている Authority Information Access 拡張機能が証明書にない場合、またはオーバーライドが必要な場合に、このプロパティが使用される
ocsp.responderCertSubjectName このプロパティの値は、OCSP 応答者の証明書の主体名である。次に例を示す ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"デフォルトでは、OCSP 応答者の証明書は、検証される証明書の発行者のものである。このプロパティは、デフォルトが使用できない場合に、OCSP 応答者の証明書を特定する。この値は RFC 2253 で定義された文字列の識別名で、証明書パスの検証中に取得した証明書セットの中から証明書を特定する。主体名だけでは証明書を特定できない場合は、ocsp.responderCertIssuerName と ocsp.responderCertSerialNumber の両方のプロパティを代わりに使用する必要がある。このプロパティが設定されている場合は、この 2 つのプロパティは無視される
ocsp.responderCertIssuerName このプロパティの値は、OCSP 応答者の証明書の発行者名である。次に例を示す ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"デフォルトでは、OCSP 応答者の証明書は、検証される証明書の発行者のものである。このプロパティは、デフォルトが適用されない場合に、OCSP 応答者の証明書を特定する。この値は RFC 2253 で定義された文字列の識別名で、証明書パスの検証中に取得した証明書セットの中から証明書を特定する。このプロパティが設定されている場合、ocsp.responderCertSerialNumber プロパティも設定されている必要がある。ocsp.responderCertSubjectName プロパティが設定されている場合、このプロパティは無視される
ocsp.responderCertSerialNumber このプロパティの値は、OCSP 応答者の証明書のシリアル番号である。次に例を示す ocsp.responderCertSerialNumber=2A:FF:00デフォルトでは、OCSP 応答者の証明書は、検証される証明書の発行者のものである。このプロパティは、デフォルトが適用されない場合に、OCSP 応答者の証明書を特定する。値は 16 進数の文字列 (コロンまたはスペースで区切られている) で、証明書パスの検証中に取得した証明書セットの中から証明書を特定する。このプロパティが設定されている場合、ocsp.responderCertIssuerName プロパティも設定されている必要がある。ocsp.responderCertSubjectName プロパティが設定されている場合、このプロパティは無視される
これらのプロパティは、Java ランタイムの $JAVA_HOME/jre/lib/security/java.security ファイル内で静的に設定されるか、または java.security.Security.setProperty() メソッドを使って動的に設定されます。
デフォルトでは、OCSP チェックは有効ではありません。ocsp.enable プロパティを「true」 に設定すると有効になります。その他のプロパティは、オプションで使用できます。OCSP チェックは、取り消しチェックも有効になっている場合にのみ有効になります。取り消しチェックは、PKIXParameters.setRevocationEnabled() メソッドを使って有効にできます。
OCSP チェックは、取り消しチェック中に証明書取り消しリスト (CRL) と連動して機能します。以下は、OCSP と CRL の相互作用の概要です。CRL でのフェイルオーバーは、OCSP に問題が発生した場合に限り、発生します。OCSP 応答者が、証明書が取り消されたことまたは取り消されていないことを確認した場合は、フェイルオーバーは発生しません。
PKIXParameters RevocationEnabled (default=true) ocsp.enabled (default=false) 動作 true true OCSP を使用した取り消しチェック、
CRL を使用したフェイルオーバーtrue false CRL を使用した取り消しチェックのみ false true 取り消しチェックなし false false 取り消しチェックなし
取り消しチェックおよび証明書取り消しリストの詳細については、「Java Certification Path API プログラマーズガイド」を参照してください。
java.security.cert.X509CRL クラスには getRevokedCertificate(BigInteger) メソッドがあり、証明書のシリアル番号をもとに CRL エントリを取得します。ただし、間接的 CRL では、シリアル番号は証明書を一意に特定しません。5.0 では、getRevokedCertificate() のオーバーロード形式が追加され、証明書の CRL エントリを取得します。
5.0 より前では、java.security.cert.X509CRLEntry
クラスには CRL エントリが記述する証明書の発行者を取得するメソッドがありませんでした。5.0 では、この問題に対処するため、getCertificateIssuer()
メソッドが追加されました。
CertPath API での識別名の使用の明確化
CertPath API
には、バイト配列と文字列を受け取って識別名を表現するためのコンストラクタとメソッドがあります。ただし、あるクラスでは、識別名を表現するための X500Principal
を受け取る同様のオーバーロード形式がありませんでした。識別名の表現には、型定義が適切で効率的なため、X500Principal
を使うことをお勧めします。次のメソッドが CertPath API に追加されています。
public TrustAnchor(X500Principal caPrincipal, PublicKey pubKey,
byte[] nameConstraints);
public final X500Principal getCA();
public X500Principal getIssuer();
public void setIssuer(X500Principal issuer);
public X500Principal getSubject();
public void setSubject(X500Principal subject);
public void setIssuers(Collection
public void addIssuer(X500Principal issuer);
public Collection
X509Certificate クラス内の getSubjectDN() および getIssuerDN() メソッド、X509CRL クラス内の getIssuerDN() メソッドには、その仕様から形式が指定されていない識別名を返すという問題があります。その結果、異なる実装からは実装に固有のオブジェクトが返され、ア プリケーションの相互運用性が低くなり、移植できなくなります。これらのメソッドは、使用しないことが強く推奨されています。その代わり、X500Principal のインスタンスを返すメソッドをアプリケーションで使用する必要があります。
public final String getPolicyQualifierId()
public final byte[] getEncoded()
public final byte[] getPolicyQualifier()
Alias name:equifaxsecureebusinessca1
Owner:CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US
Alias name:equifaxsecureca
Owner:OU=Equifax Secure Certificate Authority, O=Equifax, C=US
Alias name:geotrustglobalca
Owner:CN=GeoTrust Global CA, O=GeoTrust Inc., C=US
Alias name:equifaxsecureglobalebusinessca1
Owner:CN=Equifax Secure Global eBusiness CA-1, O=Equifax Secure Inc., C=US
Alias name:equifaxsecureebusinessca2
Owner:OU=Equifax Secure eBusiness CA-2, O=Equifax Secure, C=US
Alias name:verisignclass1g3ca
Owner:CN=VeriSign Class 1 Public Primary Certification Authority - G3, OU="(c)
1999 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network,
O="VeriSign, Inc.", C=US
Issuer:CN=VeriSign Class 1 Public Primary Certification Authority - G3, OU="(c)
1999 VeriSign, Inc.
- For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
Alias name:verisignclass2g2ca
Owner:OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized
use only", OU=Class 2
Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
Issuer:OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized
use only", OU=Class 2 Public Primary Certification Authority - G2, O="VeriSign,
Inc.", C=US
Alias name:verisignclass3g3ca
Owner:CN=VeriSign Class 3 Public Primary Certification Authority - G3, OU="(c)
1999 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network,
O="VeriSign, Inc.", C=US
Issuer:CN=VeriSign Class 3 Public Primary Certification Authority - G3, OU="(c)
1999 VeriSign, Inc.
- For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
Alias name:verisignclass1g2ca
Owner:OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized
use only", OU=Class 1
Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
Issuer:OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized
use only", OU=Class 1 Public Primary Certification Authority - G2, O="VeriSign,
Inc.", C=US
Alias name:verisignclass2g3ca
Owner:CN=VeriSign Class 2 Public Primary Certification Authority - G3, OU="(c)
1999 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network,
O="VeriSign, Inc.", C=US
Issuer:CN=VeriSign Class 2 Public Primary Certification Authority - G3, OU="(c)
1999 VeriSign, Inc.
- For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
Alias name:verisignclass3g2ca
Owner:OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized
use only", OU=Class 3
Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
Issuer:OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized
use only", OU=Class 3 Public Primary Certification Authority - G2, O="VeriSign,
Inc.", C=US