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

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

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

2019-11-18 13:14:37
字體:
來源:轉載
供稿:網友

  學習如何創建數字證書鏈以測試您的軟件。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 文件??梢韵螺d源代碼包獲得缺少的文件。)
  
  安裝后,保證 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
91亚洲精品在线观看| 日韩中文在线中文网在线观看| 国产精品wwww| 亚洲美女性生活视频| 欧美激情亚洲一区| 国产一区二区三区免费视频| 在线看国产精品| 久久成年人免费电影| 国产精品久久久久影院日本| 国产精品永久在线| 色综合老司机第九色激情| 亚洲精品免费av| 亚洲在线视频观看| 亚洲第一视频网| 91亚洲精品一区| 中文字幕自拍vr一区二区三区| 日韩在线观看免费高清完整版| 国产综合久久久久久| 成人性生交大片免费看视频直播| 国内精品久久久久久久| 欧美日韩国产精品一区二区不卡中文| www.日韩av.com| 亚洲乱码国产乱码精品精| 国外成人在线视频| 91日本在线观看| 亲子乱一区二区三区电影| 91国语精品自产拍在线观看性色| 久久精品国产亚洲| 国产午夜精品美女视频明星a级| 国内外成人免费激情在线视频| 在线激情影院一区| 日韩高清有码在线| 国产精品美女在线观看| 色综合天天狠天天透天天伊人| 久久视频在线播放| 欧美视频国产精品| 国产精品吊钟奶在线| 成人激情在线观看| 97在线视频免费播放| 国产在线不卡精品| 欧美韩国理论所午夜片917电影| 日本一欧美一欧美一亚洲视频| 欧美成人精品在线视频| 清纯唯美日韩制服另类| 国产专区精品视频| 成人精品视频久久久久| 97视频在线观看网址| 亚洲国产一区二区三区四区| 红桃视频成人在线观看| 国产美女主播一区| 国产精品第三页| xxx成人少妇69| 欧美一级大胆视频| 国产日韩精品在线| 国产精品福利久久久| 日韩在线视频网| 亚洲精选中文字幕| 97免费在线视频| 国产香蕉97碰碰久久人人| 国产欧美久久久久久| 成人国产在线视频| 77777少妇光屁股久久一区| 日韩av网站大全| 国产成人激情小视频| 欧美一区二区三区精品电影| 日本精品视频在线观看| 亚洲美女在线看| 日韩中文在线中文网在线观看| 一本大道久久加勒比香蕉| 动漫精品一区二区| 国产欧美一区二区三区视频| 成人激情免费在线| 欧美精品videofree1080p| 久久青草精品视频免费观看| 久久久久亚洲精品成人网小说| 日本精品免费一区二区三区| 国产高清视频一区三区| 茄子视频成人在线| 国产成人精品日本亚洲专区61| 成人在线播放av| 一区二区中文字幕| 综合av色偷偷网| 国产精品久久久久久久9999| 日本伊人精品一区二区三区介绍| 欧美高清视频一区二区| 国产盗摄xxxx视频xxx69| 中文字幕视频在线免费欧美日韩综合在线看| 欧美日韩国产二区| 国产精品福利无圣光在线一区| 日韩精品高清视频| 色在人av网站天堂精品| 91嫩草在线视频| 亚洲国产精品成人一区二区| 色综久久综合桃花网| 欧美孕妇孕交黑巨大网站| 九九热这里只有精品免费看| 久久久久国色av免费观看性色| 欧美在线亚洲一区| 欧美性猛交xxxxx水多| 日韩精品视频中文在线观看| 久久精品久久久久久国产 免费| 欧洲美女免费图片一区| 日韩av观看网址| 久久国产色av| 一区国产精品视频| 国产色综合天天综合网| 欧美人与性动交| 欧美午夜精品久久久久久浪潮| 久久99国产精品久久久久久久久| 激情久久av一区av二区av三区| 亚洲最新在线视频| 中文字幕v亚洲ⅴv天堂| 亚洲欧洲日韩国产| 中文欧美在线视频| 91免费福利视频| 亚洲人成网7777777国产| 国产成人97精品免费看片| 91国内免费在线视频| 亚洲欧洲在线免费| 永久免费看mv网站入口亚洲| 一区二区中文字幕| 91久久精品国产91性色| 中文字幕日韩精品有码视频| 日韩美女在线看| 欧美成年人在线观看| 亚洲天堂男人的天堂| 精品欧美aⅴ在线网站| 亚洲精品不卡在线| 夜色77av精品影院| 国内精品模特av私拍在线观看| 久久久91精品国产一区不卡| 国产激情综合五月久久| 欧美有码在线视频| 中文国产成人精品久久一| 97成人在线视频| 欧美亚洲在线播放| 久久精品最新地址| 亚洲一区第一页| 一道本无吗dⅴd在线播放一区| 26uuu久久噜噜噜噜| 亚洲天堂av网| 亚洲国内精品视频| 色综合天天狠天天透天天伊人| 国产在线高清精品| 久久韩国免费视频| 国语自产精品视频在线看| 国产97免费视| 北条麻妃一区二区三区中文字幕| 国产视频一区在线| 精品一区二区三区四区在线| 欧美精品国产精品日韩精品| 欧美疯狂xxxx大交乱88av| 亚洲性无码av在线| 欧美激情亚洲综合一区| 福利一区福利二区微拍刺激| 欧美体内谢she精2性欧美| 国产欧美在线视频| 最近的2019中文字幕免费一页| 亚洲国产成人久久综合| 亚洲a∨日韩av高清在线观看| 国产精品一区=区| 久久夜色精品国产亚洲aⅴ| 91免费精品视频| 亚洲最大福利网|