2008-04-21

JSSE笔记

n        TrustManager

信任管理器

 

n        TrustManagerFactory

信任管理器工厂

 

getAlgorithm获取算法,默认算法

getInstance:算法,提供者

getProvider

init:根据keystore或管理器工厂参数

n        X509ThustManager

X509信任管理器

 

CheckClientTrusted

  输入的是证书链和认证类型,如RSA,注意大小写,由客户端的SSLSocket检查是否信任。

 

CheckServerThusted

   输入证书链和认证类型。如RSADHE_DSS

 

getAcceptedIssuers()

    返回信任的证书。

n        X509Certificate

X509证书

 

格式:

Certificate  ::=  SEQUENCE  {

     tbsCertificate       TBSCertificate,

     signatureAlgorithm   AlgorithmIdentifier,

     signature            BIT STRING  }

由证书,签名和签名算法构成。

 

广泛用于隐私加强邮件,SSL,代码签名,SET安全电子交易。

证书由CA管理。

 

其中TBSCertificate的格式是:

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

     }

 

初始化X509证书:

InputStream inStream = new FileInputStream("fileName-of-cert");

 CertificateFactory cf = CertificateFactory.getInstance("X.509");

 X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);

 inStream.close();

 

 

getIssuerDN:发行者名字

 

n        KeyStore

密钥存储,代表内存中密钥和证书的集合。

管理两种类型:

(1)    密钥项

(2)    信任的证书项

公钥证书。

 

Keystore中的每个输入项由alias别名标志。

两种类型来请求keystore对象:

根据类型

KeyStore ks = KeyStore.getInstance("JKS");

根据类型和包提供者:

KeyStore ks = KeyStore.getInstance("JKS", "SUN");

 

在访问KeyStore之前,必须先用load

load中输入空输入流可以创建空KeyStore

 

KeyStore提供了loadstore两种方法。

n        SSLContext

SSL上下文

 

SSL上下文的作用是getSocketFactory

SSL上下文的实例本身可以通过协议和provider取得。

然后根据密钥管理器、信任管理器,安全随机数来初始化。

n        KeyManager

密钥管理器,接口,空方法

KeyManagerFactory来创建。

 

实现类X509密钥管理器:

 

 

n        KeyManagerFactory

密钥管理器工厂

 

根据算法、提供者来取得实例。

取得实例后可以获取一组密钥管理器。

 

根据KeyStore和密码来初始化密钥管理器工厂。

 

n        X509密钥管理器

选择客户端别名

选择服务器别名

获取证书链

获取客户端别名

获取服务器别名

获取私钥

 

n         

conn.flushRequestOutputStream();的时候检查server是否信任的。

 

n        Principal

负责人

 

n        证书打印出来的样子

[

[

  Version: V3

  Subject: CN=www.18ebank.com, OU=SFESC, O=CFCA Operation CA, C=CN

  Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5

 

  Key:  SunJSSE RSA public key:

  public exponent:

    010001

  modulus:

    c6ca4f9a 1ff3a3cd df60de92 f8116451 483479f0 7401f430 c403e2f4 b3e613ce

    15f30d7c b2627996 dc655b49 1edb34d9 6c8afaa8 3c55fd4a ed7fca8f 2ee3bfd4

    06559f42 5f787ba7 57e51041 27fab1a4 f4628652 63f2db78 396afd70 a7b1ad6b

    7698e74c d47458d5 0c26c226 cef151d1 5ffc619f a263f41b 56aad051 27ba66d3

  Validity: [From: Fri Nov 26 16:32:30 CST 2004,

               To: Sun Nov 26 17:02:30 CST 2006]

  Issuer: O=CFCA Operation CA, C=CN

  SerialNumber: [    3fc64dca]

 

Certificate Extensions: 11

[1]: ObjectId: 2.5.29.17 Criticality=false

SubjectAlternativeName [

[RFC822Name: zhangpeng@szcb.com]]

 

[2]: ObjectId: 2.5.29.35 Criticality=false

AuthorityKeyIdentifier [

KeyIdentifier [

0000: C3 27 C6 36 68 C8 27 65   24 87 AF 91 A7 4B 26 33  .'.6h.'e$....K&3

 

0010: 02 E5 1A E9                                        ....

 

]

 

]

 

[3]: ObjectId: 1.2.840.113533.7.65.0 Criticality=false

Extension unknown: DER encoded OCTET string =

0000: 04 0C 30 0A 1B 04 56 36   2E 30 03 02 03 A8        ..0...V6.0....

 

 

 

[4]: ObjectId: 2.5.29.14 Criticality=false

SubjectKeyIdentifier [

KeyIdentifier [

0000: AC 87 6A 7D 77 9E A4 30   E6 58 CD C1 04 40 D5 23  ..j.w..0.X...@.#

 

0010: AA AC 59 46                                        ..YF

 

]

]

 

[5]: ObjectId: 2.5.29.16 Criticality=false

PrivateKeyUsage: [

From: Fri Nov 26 16:32:30 CST 2004, To: Sun Nov 26 17:02:30 CST 2006]

 

[6]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false

NetscapeCertType [

   SSL client

   S/MIME

]

 

[7]: ObjectId: 2.5.29.19 Criticality=false

BasicConstraints:[

CA:false

PathLen: undefined

]

 

[8]: ObjectId: 2.16.840.1.113730.1.3 Criticality=false

Extension unknown: DER encoded OCTET string =

0000: 04 3D 16 3B 63 6C 69 65   6E 74 63 67 69 2E 65 78  .=.;clientcgi.ex

 

0010: 65 3F 61 63 74 69 6F 6E   3D 63 68 65 63 6B 52 65  e?action=checkRe

 

0020: 76 6F 63 61 74 69 6F 6E   26 26 43 52 4C 3D 63 6E  vocation&&CRL=cn

 

0030: 3D 43 52 4C 37 32 37 26   73 65 72 69 61 6C 3D     =CRL727&serial=

 

 

 

[9]: ObjectId: 2.5.29.31 Criticality=false

CRLDistributionPoints [

  [DistributionPoint:

     [CN=CRL727, O=CFCA Operation CA, C=CN]

]]

 

[10]: ObjectId: 2.16.840.1.113730.1.2 Criticality=false

Extension unknown: DER encoded OCTET string =

0000: 04 1C 16 1A 68 74 74 70   73 3A 2F 2F 53 49 54 45  ....https://SITE

 

0010: 5F 4E 41 4D 45 2F 63 64   61 2D 63 67 69 2F        _NAME/cda-cgi/

 

 

 

[11]: ObjectId: 2.5.29.15 Criticality=false

KeyUsage [

  DigitalSignature

  Non_repudiation

  Key_Encipherment

]

 

]

  Algorithm: [SHA1withRSA]

  Signature:

0000: 00 4D E6 17 35 CE 31 84   CB 68 7C 68 19 85 7E EC  .M..5.1..h.h....

 

span

评论
发表评论

您还没有登录,请登录后发表评论

Azi
搜索本博客
存档
最新评论