|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.security.cert.Certificate javax.security.cert.X509Certificate
public abstract class X509Certificate
X.509 v1 證書的抽象類別。此類別提供了一種存取 X.509 v1 證書所有屬性的標準方式。無法通過此介面提供專用於 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 }
這些證書被廣泛使用以支持 Internet 安全系統中的驗證和其他功能。常見的應用包括增強保密郵件 (PEM)、傳輸層安全 (SSL)、用於受信任軟體發佈的程式碼簽章和安全電子交易 (SET)。
由證書頒發機構 (CA) 來管理和擔保這些證書。CA 的工作是創建證書,方法是將資料置於 X.509 標準格式,然後以數字方式簽署該資料。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 = <certificate read from a file, say> 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 安全Socket擴展(Java Secure Socket Extension,JSSE)保持相容。新的應用程序應該使用 java.security.cert
中的標準 Java SE 證書類別。
Certificate
,
X509Extension
建構子摘要 | |
---|---|
X509Certificate()
|
方法摘要 | |
---|---|
abstract void |
checkValidity()
檢查證書目前是否有效。 |
abstract void |
checkValidity(Date date)
檢查指定的日期是否處於證書的有效期內。 |
static X509Certificate |
getInstance(byte[] certData)
實例化一個 X509Certificate 物件,並使用指定的 byte 陣列初始化它。 |
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 編碼形式的簽章演算法參數。 |
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
讀取的資料初始化它。在安全屬性檔案中,屬性 cert.provider.x509v1
的值指定了一個類別,而這個類別提供了該實作(X509Certificate 是一個抽象類別)。
註:期望輸入串流中只有一個 DER 編碼的證書。另外,所有 X509Certificate 子類別必須提供以下形式的建構子:
public <subClass>(InputStream inStream) ...
inStream
- 輸入串流,為了初始化該證書而要從中讀取資料。
CertificateException
- 如果發生類別初始化或證書解析錯誤。public static final X509Certificate getInstance(byte[] certData) throws CertificateException
cert.provider.x509v1
屬性值的類別來提供該實作(X509Certificate 是一個抽象類別)。
註:所有 X509Certificate 子類別必須提供以下形式的建構子:
public <subClass>(InputStream inStream) ...
certData
- 套件含 DER 編碼證書的 byte 陣列。
certData
中的資料初始化該物件。
CertificateException
- 如果發生類別初始化或證書解析錯誤。public abstract void checkValidity() throws CertificateExpiredException, CertificateNotYetValidException
有效期由兩個日期/時間值組成:證書有效的起始日期(和時間)和終止日期(和時間)。用 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 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。