Java 安全通訊端編程以及 keytool 使用最佳實務

來源:互聯網
上載者:User

概述

利用 Java 的 JSSE(Java Secure Socket Extension)技術,我們可以方便的編寫安全通訊端程式,關於 JSSE 的介紹,可以參閱 Oracle網站提供的 JSSE指導。程式編寫過程中,我們需要將數位憑證應用到代碼中。通常在正式的產品開發中,我們可以支付一定的費用,向正規認證機構,例如:Verisign、Geotrust、Thawte等申請。

如果只是為了實驗,我們還可以使用 Java 內建的 keytool 工具來製作認證。keytool 是密鑰和認證管理工具,產生的密鑰或認證,存放在 jks(Java Key Store) 格式的檔案裡。從用途上來說,jks 格式的檔案常用於:

1) 儲存非對稱金鑰對以及數位憑證的認證庫;

2) 儲存信任認證列表的信任庫。

注意:不同版本的 Java 內建的 keytool 命令列參數可能會略有不同。相比於 Java6,在 Java7 中 keytool        工具有如下改動:

-export 選項改名為 -exportcert

-genkey 選項改名為 -genkeypair

-import 選項改名為 – importcert

-keyclone 選項被廢棄

-identitydb 選項被廢棄

-selfcert 選項被廢棄

下面將以 Java7 中的 keytool 為例,對常見的用法進行說明。

使用 keytool 製作認證庫以及信任庫

產生非對稱金鑰以及自簽發認證

命令:keytool -genkeypair -alias TEST_ROOT -keystore test_root.jks

解釋:產生一對密鑰以及一個自簽發認證,其中私密金鑰和認證以別名 TEST_ROOT 儲存在 test_root.jks 檔案中。

注意:使用上述命令時,命令列會互動的需要手動填寫密碼、CN、OU 等資訊。

產生認證請求檔案

命令:keytool -certreq -file test_server.csr -alias TEST_SERVER -keystore        test_server.jks

解釋:將別名為 TEST_SERVER 的公開金鑰和一些個人資訊從 test_server.jks 檔案中匯出,作為認證請求檔案。

簽發認證

命令:keytool -gencert -infile test_server.csr -outfile test_server.cer        -alias TEST_ROOT -keystore TEST_ROOT.jks

解釋:使用別名為 TEST_ROOT 的私密金鑰為 test_server.csr 簽發認證,並儲存到 test_server.cer 檔案中。

從 jks 檔案中匯出認證

命令:keytool -exportcert -alias TEST_ROOT -file test_root.cer -keystore        test_root.jks

解釋:從 test_root.jks 檔案中匯出別名為 TEST_ROOT 的認證並存放在 test_root.cer 檔案中。

匯入信任認證到 jks 檔案

命令:keytool -importcert -alias TEST_ROOT -file test_root.cer -keystore        TEST_SERVER.jks

解釋:將認證 test_root.cer 以別名 TEST_ROOT 匯入 TEST_SERVER.jks 中。

注意:這裡的目標 jks 檔案裡不含有指定的別名,此時的匯入條目才會以 trustedCertEntry        信任認證的形式儲存。

匯入簽發認證到 jks 檔案 ( 更新認證 )

命令:keytool -importcert -alias TEST_SERVER -file        test_server.cer -keystore TEST_SERVER.jks

解釋:將認證 test_server.cer 更新到已存在別名 TEST_SERVER 的        TEST_SERVER.jks 檔案中

注意:這裡的命令和上述匯入信任認證的命令在形式上完全一樣,但作用不同。

1. 這裡的目標 jks 檔案裡要含有指定的別名,這樣 keytool 工具才會理解命令為更新認證,並以 PrivateKeyEntry 的形式儲存。

2. 在更新被簽發認證之前,一定要先將相應的 CA 憑證,匯入進 jks 檔案,否則會報錯“keytool 錯誤 : java.lang.Exception:        無法從回複中建立鏈”。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.