<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
    主站蜘蛛池模板: 尤物视频在线免费观看| 亚洲成AV人影片在线观看| APP在线免费观看视频| 亚洲精品视频免费观看| 老司机午夜免费视频| 亚洲国产成人VA在线观看| 羞羞漫画在线成人漫画阅读免费| 国产禁女女网站免费看| 日本中文字幕免费看| 亚洲熟妇无码八AV在线播放 | 亚洲色偷偷色噜噜狠狠99网| 国产乱码免费卡1卡二卡3卡| 亚洲精品伊人久久久久| 四虎成人免费网站在线| 国产精品亚洲精品日韩电影| 婷婷综合缴情亚洲狠狠尤物| 好猛好深好爽好硬免费视频| 亚洲av无码国产精品色午夜字幕| 91精品国产免费入口| 亚洲五月丁香综合视频| 国产精品高清全国免费观看| sihu国产精品永久免费| 青青草原精品国产亚洲av| 日韩精品成人无码专区免费| 国产精品亚洲精品日韩电影| 亚洲小说区图片区另类春色| 日韩免费人妻AV无码专区蜜桃 | 亚洲欧洲中文日产| 国产精品va无码免费麻豆| 天黑黑影院在线观看视频高清免费| 亚洲激情视频在线观看| 免费鲁丝片一级在线观看| 一级片在线免费看| 亚洲午夜电影在线观看| 婷婷综合缴情亚洲狠狠尤物| 免费无码又爽又刺激高潮视频| 中文字幕亚洲男人的天堂网络 | AV大片在线无码永久免费| 男女超爽视频免费播放| 亚洲综合一区二区国产精品| 日本最新免费不卡二区在线|