麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

為測試 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 文件。可以下載源代碼包獲得缺少的文件。)
  
  安裝后,保證 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 []:[email protected]
  $
  
  完成對話框后,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 []:[email protected]
  
  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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高清一区二区在线观看 | 最新毛片在线观看 | 一级做a爱片毛片免费 | 国产91亚洲精品久久久 | 久久精品视频黄色 | 国产精品一区网站 | 一区视频| 久草在线综合网 | 国产一级在线免费观看 | 天天操天天碰 | 亚洲精品在线观看网站 | 久草热久草视频 | 一本一本久久a久久精品综合小说 | 特一级毛片 | 久久精品中文字幕一区二区 | 亚洲国产精品久久久久久久久久久 | 色妞欧美 | 久久久久久亚洲综合影院红桃 | 福利在线免费视频 | 国产精品免费观在线 | 国产精品一区二区三区在线 | 鲁久久 | 欧美亚洲免费 | 在线播放一级片 | 日本一级黄色毛片 | 中国a级黄色片 | 九九热精 | 黑人操穴 | 免费在线观看成人av | 黄色片观看 | 亚州综合 | 欧美成人高清在线 | 日韩一级免费毛片 | 日日草夜夜 | 国产91一区二区三区 | 久久久久久久亚洲视频 | 国产在线导航 | 91色综合综合热五月激情 | 国产精品999在线观看 | 草久影视| 国产成年人在线观看 |