<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
    上次我們講到如何生成密鑰對,以及如何將諸如公鑰,私鑰,證書等這一類安全對象在文件系統和內存之間來回轉換.這些是準備開CA的基本功,今天我們講一下CA的基本原理以及如何使用主體名稱結構DN(Distinguish Name)來表示每一個證書中的主體.

        一份證書就是一個權威機構對一個主體的身份的確認的證明.即一份證書表示一個權威機構確認了一個主體就是它自己,而不是其它的冒名頂替者.主體可以是一個 個人,也可以不是,例如,在需要安全服務的時候,需要為一臺網站的服務器頒發證書,這種證書的主體就是一臺服務器.簽署證書的權威機構就叫做CA,該權威 機構本身也是一個主體.權威機構通過對包含有待認證的主體的一系列信息的待簽名證書"(TBS,to be signed)進行數字簽名來表示該機構對它的認可.一份包含了待認證的主體的相關信息的TBS再加上CA使用自己的私鑰進行簽名產生的字節流放在一起, 就構成了一份標準的X509證書.

        一個TBS中包含了以下這些主要信息:

        證書的版本,通常是3(X509v3)

        證書的序列號,RFC3280中規定,每個CA必須確保它頒發的每一份證書的序列號都是唯一的,并且序列號只能使用非負整數.

        簽發者(CA)的主體名稱,一個DN對象.

        證書的有效期,表示方法是兩個時間值,表示了該證書從何時開始生效,何時開始作廢.

        待認證的主體的主體名稱,也是一個DN對象.

        待認證的主體的公鑰,任何安全應用在確認完證書的有效性后,就可以開始使用該主體的公鑰與之進行安全通信.

        如果是X509v3證書,即版本號是3的話,后面還有一個證書擴展信息字段,可以在證書里面添加一些其它的信息.

        下面我們來看一下表示主體的主體名稱結構:DN.這個結就構是一個屬性的集合.每個屬性有屬性名稱和屬性值.它的作用就是用來表示"我是誰",也就是說,這個證書到底是誰頒發給誰的,這個證書對應的公鑰是誰擁有的.

        通常使用一個字符串來表示DN結構,這種字符串說明了這種結構中的各個屬性的類型和值:

        C=CN;S=BeiJing;L=BeiJing;O=PKU;OU=ICST;CN=wolfenstein

        這里C是國家和地區代碼,S和L都是地區代碼,S相當于省或者州這樣的級別,L相當于城市級別,O是組織機構名稱,OU是次級組織機構名稱,CN是主體的 通用名(common name).在這里,C,S,L等等屬性的類型都是相對固定的,例如C一般就是用來表示國家和地區代碼,在DN結構中還可以添加一些其它類型的信息,一般 也都是以"xxx=xxx"這樣來表示的.

        下面我們來說明如何在Java語言中構造出一個主體名稱對象.

        BC Provider中使用X509Name對象來表示DN,構造一個X509Name的步驟大體如下:

        先構造兩個vector對象,用來表示屬性名稱和屬性值:

        Vector oids = new Vector();
        Vector attributes = new Vector();

        然后在oids這個用來表示屬性名稱的vector對象中將屬性名稱一個一個添加進去:

        oids.addElement(X509Name.C);

        ......

        oids.addElement(X509Name.CN);

        X509Name對象里面有若干常量,例如上面的X509Name.C.還有X509Name.ST等等,都可以和上面舉的例子對應起來.

        然后將屬性值添加到attributes對象中:

        attributes.addElement("CN");

        ......

        attributes.addElement("Wolfenstein");

        最后就可以構造出一個X509Name對象:

        X509Name SubjectDN = new X509Name(oids, attributes);

        這樣,我們的主體名稱結構就確立起來了.

        下次我們就可以講關鍵的部分了,那就是如何用Java程序完成CA最重要的功能,簽署證書.

    posted on 2008-02-13 22:12 禮物 閱讀(1408) 評論(0)  編輯  收藏 所屬分類: CA
    主站蜘蛛池模板: 国产亚洲综合久久| 亚洲日本中文字幕天天更新| 亚洲色图黄色小说| 国产精品久久亚洲不卡动漫| 成年女人免费v片| 精品免费久久久久久成人影院| vvvv99日韩精品亚洲| 国产亚洲一区二区三区在线观看| 久久久亚洲AV波多野结衣 | 久久亚洲一区二区| 国产精品亚洲不卡一区二区三区 | 67pao强力打造67194在线午夜亚洲 | 亚洲美女自拍视频| 亚洲av成人无码网站…| 成人免费777777被爆出| 永久在线免费观看| 日韩精品成人亚洲专区| 亚洲男人第一av网站| 亚洲大码熟女在线观看| a毛看片免费观看视频| 欧美在线看片A免费观看| 亚洲精品无码专区2| 亚洲色图校园春色| 美女免费精品高清毛片在线视| 人人玩人人添人人澡免费| 性xxxx视频播放免费| 久久亚洲国产欧洲精品一| 亚洲成AV人片在WWW色猫咪| 亚洲综合av一区二区三区不卡| 美女无遮挡拍拍拍免费视频 | 久久精品国产影库免费看| 免费观看大片毛片| 亚洲视频在线一区| 免费激情网站国产高清第一页| 四虎在线最新永久免费| 亚洲午夜福利精品无码| 亚洲国产乱码最新视频| 亚洲国产成人超福利久久精品 | 亚洲欧美日本韩国| 久9久9精品免费观看| 国产精品免费综合一区视频|