<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
    主站蜘蛛池模板: **aaaaa毛片免费| 亚洲av乱码一区二区三区香蕉 | 91热久久免费精品99| 无码色偷偷亚洲国内自拍| 亚洲天堂福利视频| 国产亚洲精AA在线观看SEE| 亚洲第一页日韩专区| 女人被弄到高潮的免费视频| 一级毛片全部免费播放| 深夜福利在线视频免费| 亚洲AV性色在线观看| 亚洲人成伊人成综合网久久| 亚洲综合婷婷久久| 欧洲亚洲国产清在高| 伊人久久综在合线亚洲91| 亚洲精品无码99在线观看| 国产男女猛烈无遮档免费视频网站 | yellow免费网站| 亚洲成AV人片高潮喷水| 亚洲国产视频久久| 亚洲三级在线免费观看| 久久久婷婷五月亚洲97号色| 亚洲成AV人片一区二区| 亚洲精品午夜无码专区| 中文亚洲AV片在线观看不卡| 亚洲免费日韩无码系列| 亚洲人成无码www久久久| 可以免费观看一级毛片黄a| 国产又长又粗又爽免费视频| 国产精品va无码免费麻豆| 蜜臀91精品国产免费观看| 免费无码又爽又高潮视频| 国产色爽免费视频| 国产免费变态视频网址网站| 免费jjzz在线播放国产 | 亚洲欧美日韩综合俺去了| 亚洲av纯肉无码精品动漫| 亚洲高清毛片一区二区| 蜜臀亚洲AV无码精品国产午夜.| 精品国产亚洲一区二区三区在线观看 | 亚洲区小说区激情区图片区|