亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

為測試Java應用程序生成證書鏈

2019-11-18 11:18:09
字體:
來源:轉載
供稿:網友

  學習如何創建數字證書鏈以測試您的軟件。IBM 軟件工程師 Paul H. Abbott 通過展示如何使用可免費獲得的 OpenSSL 工具箱創建任意長度的證書鏈,闡明了這個很少有文檔說明的過程。他還描述了常見的證書屬性,并展示了一些將證書讀取到 java keystore 中的示例 Java 代碼。
  
  假如正在開發用于公鑰基礎設施 (PKI) 實現安全性的 Java 軟件,那么通常需要創建 數字證書鏈 (也稱為 證書路徑) 以進行測試。這是比較簡單的任務,但是關于它的文檔說明非常少。本文描述了如何用開源 OpenSSL 工具箱 (請參閱 參考資料)創建任意長度的證書鏈。還介紹了一些常見的證書屬性并分析了一個讀取證書到 Java keystore 中的示例應用程序。
  
  數字證書:快速回顧
  本文假定您熟悉 PKI 基礎知識,因此我只對數字證書的目的和結構給予簡要回顧以幫助說明證書鏈的概念。
  
  數字證書的主要用途是驗證簽名數據的來源,如電子郵件和 JAR 文件。用證書驗證簽名的數據使接收者知道數據的來源以及它在傳輸過程中是否改變過。
  
  在高層,一個數字證書包含一個 惟一名 (DN) 和一個 公鑰。DN 標識一個具有與證書的公鑰匹配的 私鑰 的實體――如一個人。通過用私鑰對證書簽名并將簽名放到證書中而將兩者結合到一起。
  
  一個由匹配證書公鑰的私鑰簽名的證書稱為 自簽名 證書。根證書頒發機構 (Root certification authority,CA) 證書就屬于這一類。用戶證書通常是由不同的私鑰簽名的,如 CA 的私鑰。這構成了兩證書鏈。驗證用戶證書為真涉及驗證其證書中的簽名,這需要 CA 的公鑰。但在在可以使用 CA 的公鑰之前,需要對封裝的 CA 證書進行驗證。因為 CA 證書是自簽名的,所以用 CA 公鑰驗證證書。
  
  用戶證書需要用根 CA 的私鑰簽名。它可以用一個中介的私鑰簽名,這個私鑰的證書是用 CA 的私鑰簽名的。這是一個三證書鏈的例子:用戶證書、中介證書和 CA 證書。但是在鏈中可以有多個中介,因此證書鏈可以有任意的長度。
  
  值得一提的另一點是證書可以包含額外信息,稱為 extension。Extension 可以指定證書的用途以及其他內容。根據于證書的用途,某些 extension 有可能非常重要。
  
  用 OpenSSL 創建證書
  有一些創建證書的工具。可以使用在 Java SDK 中自帶的一個命令行工具 keytool 創建自簽名的證書。但是證書鏈需要更復雜的軟件,如 OpenSSL。
  
  獲得 OpenSSL
  可以免費下載 OpenSSL (請參閱 參考資料)。假如使用 UNIX,那么很可能在操作系統中已經安裝了 OpenSSL,或者它是操作系統的安裝選項。linux 用戶應當查看: /usr/share/ssl。Microsoft MKS toolkit 也帶有某個版本的 OpenSSL。 (在我的計算機中它是在 C:/PRogram Files/MKS Toolkit/etc/openssl。) 假如使用 Windows 但是沒有 MKS,那么可以從 SourceForge 得到必要的二進制文件 (請參閱 參考資料)。大多數安裝由三個主要文件組成:OpenSSL 二進制文件、一個 CA.sh shell 腳本和一個 openssl.cnf 配置文件。(SourceForge 的軟件包缺少 CA.sh 文件。可以下載源代碼包獲得缺少的文件。)
  
  安裝后,保證 CA.sh 和 OpenSSL 可執行文件在路徑中。然后就可以開始創建根證書了。
  
  創建根證書
  CA shell 腳本使創建根證書成為一項相對輕易的工作。首先,進入要存放 CA 數據的目錄。 (我使用 temp/OpenSSL 目錄。) 然后鍵入:
  
  CA -newca
  
  這會產生一個像清單 1 的對話框,它包括我在提示符下輸入的示例信息:
  
  清單 1. 創建根證書
  
  $ CA.sh -newca
  CA certificate filename (or enter to create)
  
  Making CA certificate ...
  Using configuration from C:/PROGRA~1/MKSTOO~1/etc/openssl/openssl.cnf
  Loading 'screen' into random state - done
  Generating a 1024 bit RSA private key
  ......++++++
  ...++++++
  writing new private key to './demoCA/private/./cakey.pem'
  Enter PEM pass phrase:
  Verifying passWord - Enter PEM pass phrase:
  -----
  You are about to be asked to enter information that will be incorporated into your certificate request.
  What you are about to enter is what is called a Distinguished Name or a DN.
  You will see a number of fields, but you can leave some blank.
  For some fields there will be a default value,
  If you enter '.', the field will be left blank.
  -----
  Country Name (2 letter code) [AU]:UK
  State or Province Name (full name) [Some-State]:Hampshire
  Locality Name (e.g., city) []:Winchester
  Organization Name (e.g., company) [Internet Widgits Pty Ltd]:IBM UK Ltd
  Organizational Unit Name (e.g., section) []:JTC
  Common Name (e.g., YOUR name) []:Pauls Root Certificate
  Email Address []:Paul_Abbott@uk.ibm.com
  $
  
  完成對話框后,OpenSSL 創建以下目錄結構:
  
  demoCA/
    cacert.pem       - root certificate
    index.txt        - empty
    serial         - text file containing "01"
    certs/         - empty
    crl/          - empty
    newcerts/        - empty
    private/cakey.pem    - private key
  
  下面是在主目錄中文件的簡單說明:
  
  cacert.pem 是這個 CA 的 PEM 編碼的(請參閱側欄 PEM 文件格式)根證書。根證書驗證由根私鑰簽名的證書。
  
  index.txt 是包含所有發布的證書列表的文件。
  
  serial 包含將指定給由這個 CA 發布的證書的下一個可用序列號。換一種說法,它是在這個根證書對簽名請求簽名時指定給一個證書的惟一序列號。
  
  cakey.pem 是根私鑰。這個密鑰用于簽名證書請求。它也是 PEM 編碼的。
  
  您定義目錄名 (在這個例子中是 demoCA) 和根證書的有效周期,在 CA.sh 中它默認為 365 天。假如想要改變這些值,必須編輯這個文件。
  
  生成用戶證書
  生成用戶證書有兩步:生成一個請求和對請求簽名。CA shell 腳本可以用 -newreq (生成一個新的請求) 和 -sign (簽名一個新請求) 操作符完成這兩步。
  
  生成一個新請求
  執行 CA -newreq 命令會啟動一個類似于生成新根證書時看到的對話框。一個主要的不同是這個對話框提示您輸入 PEM 密碼短語,OpenSSL 將使用這個短語編碼私鑰,然后將它寫入輸出文件。
  
  輸出文件名為 newreq.pem,包含私鑰和簽名請求,可以將它想像為未簽名的證書。清單 2 顯示了一個新請求對話框的例子。
  
  清單 2. 示例 -newreq 對話框
  
  Using configuration from
  C:/PROGRA~1/MKSTOO~1/etc/openssl/openssl.cnf
  Loading 'screen' into random state - done
  Generating a 1024 bit RSA private key
  ......................++++++
  ...++++++
  writing new private key to 'newreq.pem'
  Enter PEM pass phrase:
  Verifying password - Enter PEM pass phrase:
  -----
  You are about to be asked to enter information that will be incorporated into your certificate request.
  What you are about to enter is what is called a Distinguished Name or a DN.
  You will see a number of fields, but you can leave some blank.
  For some fields there will be a default value.
  If you enter '.', the field will be left blank.
  -----
  Country Name (2 letter code) [AU]:UK
  State or Province Name (full name) [Some-State]:Hampshire
  Locality Name (e.g., city) []:Winchester
  Organization Name (e.g., company) [Internet Widgits Pty Ltd]:IBM Uk Ltd
  Organizational Unit Name (e.g., section) []:JET
  Common Name (e.g., YOUR name) []:Paul Abbott
  Email Address []:Paul_H_Abbott@uk.ibm.com
  
  Please enter the following 'extra' attributes
  to be sent with your certificate request
  A challenge password []:qwerty
  An optional company name []:
  Request (and private key) is in newreq.pem
  
  對請求簽名
  執行 CA -sign 命令會用包含在 private/cakey.pem 中的根 CA 的私鑰簽名請求。請求需要在一個名為 newreq.pem 的文件中,生成的證書寫入到名為 newcert.pem 的文件中,這兩個文件都在當前目錄中。清單 3 顯示了示例請求-簽名對話框。
  
  清單 3. 示例 -sign 對話框
  
  $ CA.sh -sign
  Using configuration from C:/PROGRA~1/MKSTOO~1/etc/openssl/openssl.cnf
  Loading 'screen' into random state - done
  Enter PEM pass phrase:
  Check that the request matches the signature
  Signature ok
  The Subjects Distinguished Name is as follows
  countryName      :PRINTABLE:'UK'
  stateOrProvinceName  :PRINTABLE:'Hampshire'
  localityName     :PRINTAB

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品99无色码中文字幕| 日韩激情在线视频| 亚洲精品按摩视频| 92福利视频午夜1000合集在线观看| 亚洲精品免费一区二区三区| 国产女精品视频网站免费| 2019最新中文字幕| 91美女福利视频高清| 国产精品久久久久9999| 日本韩国在线不卡| 亚洲国产精品成人精品| 中文字幕综合一区| 亚洲免费av电影| 久久人体大胆视频| 欧日韩不卡在线视频| 国产精品99导航| 欧美成人精品在线观看| 久久综合伊人77777| 视频在线观看一区二区| 久久中文字幕国产| 欧美日韩精品中文字幕| 91av在线视频观看| 精品国产一区二区三区四区在线观看| 奇门遁甲1982国语版免费观看高清| 亚洲人成电影在线播放| 精品视频在线导航| 色综合视频一区中文字幕| 欧美极品在线播放| 91精品久久久久久久久青青| 亚洲免费视频观看| 亚洲激情视频在线播放| 国产精品吊钟奶在线| 亚洲精品乱码久久久久久金桔影视| 亚洲欧洲视频在线| 久久亚洲一区二区三区四区五区高| 欧洲美女7788成人免费视频| 久久99视频精品| 国产精品一区二区av影院萌芽| 欧美精品久久久久久久久久| 成人午夜激情网| 久久久噜久噜久久综合| 国产精品久久久久久久久久新婚| 九九热精品视频国产| 91高清视频免费| 97精品国产91久久久久久| 中文字幕一区二区三区电影| 亚洲综合日韩在线| 国产精品视频公开费视频| 欧美最猛性xxxxx(亚洲精品)| 91精品久久久久久| 久久久久久这里只有精品| 黄网站色欧美视频| 国产精品综合不卡av| 国产精品ⅴa在线观看h| 日韩精品视频中文在线观看| 国产精品v片在线观看不卡| 欧美在线精品免播放器视频| 性金发美女69hd大尺寸| 亚洲福利小视频| 久久久久久久久久久91| 68精品国产免费久久久久久婷婷| 在线视频中文亚洲| 久久中文字幕国产| 亚洲欧洲偷拍精品| 日本免费久久高清视频| 国产www精品| 伦理中文字幕亚洲| 久久电影一区二区| 国产精品视频公开费视频| 亚洲电影在线观看| 亚洲精品自产拍| xxx欧美精品| 日韩精品视频免费| 亚洲老头同性xxxxx| 欧美在线观看一区二区三区| 欧美午夜久久久| 色偷偷偷综合中文字幕;dd| 中文字幕亚洲情99在线| 亚洲一区亚洲二区| 欧美最猛黑人xxxx黑人猛叫黄| 中文字幕久久久| 国产亚洲欧美一区| 亚洲第一精品夜夜躁人人躁| 91免费看国产| 国产婷婷成人久久av免费高清| 热久久免费视频精品| 98精品国产高清在线xxxx天堂| 在线电影欧美日韩一区二区私密| 91精品国产成人| 欧美性猛交xxxx免费看漫画| 国产精品igao视频| 国产mv免费观看入口亚洲| 欧美视频在线视频| 欧美激情一区二区三区成人| 国产成人涩涩涩视频在线观看| 亚州欧美日韩中文视频| 一本久久综合亚洲鲁鲁| 日韩在线国产精品| 色香阁99久久精品久久久| 中文字幕9999| 在线亚洲欧美视频| 成人夜晚看av| 91av视频在线| 国产精品久久久av| 国产精品久久久久久av福利| 亚洲精品视频久久| 国产97免费视| 欧美日韩高清在线观看| 91日韩在线视频| 亚洲国产精品电影在线观看| 亚洲成人激情小说| 欧美国产日韩一区二区| 中文字幕av日韩| 国产在线观看精品一区二区三区| 国产成人精品999| 中文字幕精品视频| 国产精品十八以下禁看| 97超级碰在线看视频免费在线看| 亚洲第一精品夜夜躁人人爽| 欧美国产视频一区二区| 亚洲性69xxxbbb| 欧美日韩国产中字| 国产精品毛片a∨一区二区三区|国| 成人免费直播live| 欧美裸体视频网站| 91亚洲国产成人久久精品网站| 欧美乱人伦中文字幕在线| 2019中文字幕在线免费观看| 91精品国产777在线观看| 国产精品嫩草影院久久久| 欧美一级免费视频| 青草青草久热精品视频在线网站| 国产一区二区在线播放| 亚洲天天在线日亚洲洲精| 国产欧美精品一区二区| 久久精品视频中文字幕| 尤物yw午夜国产精品视频明星| 国产精品99久久久久久久久| 亚洲欧美视频在线| 91久热免费在线视频| 精品久久香蕉国产线看观看gif| 国产精品第一第二| 91视频国产一区| 亚洲一区第一页| 国产成人精品亚洲精品| 91精品久久久久久久久青青| 亚洲综合国产精品| 国产精品观看在线亚洲人成网| 成人精品在线观看| 国产69精品久久久久99| 91av视频在线| 亚洲综合视频1区| 日韩资源在线观看| 欧美国产视频一区二区| 亚洲综合精品一区二区| 91最新国产视频| 国产精品91一区| 久久成人这里只有精品| 欧美整片在线观看| 91av在线网站| 国产精品高清免费在线观看| 亚洲欧美国产精品专区久久| 欧美大全免费观看电视剧大泉洋| 亚洲人成电影网站色…|