2012-03-01 121 views
1

我有一個收集數據的Java應用程序,將它寫入XML文件並通過郵件發送此XML文件。此應用程序運行在許多不同的計算機上(不在我的範圍內)。然後還有另一個應用程序將接收到的XML文件並將數據插入到數據庫中(該應用程序在我自己的服務器上運行)。到現在爲止,我不得不相信,數據沒有改變,XML文件真的來自可信來源。Java中的自簽名證書 - 簽名XML文件

現在我想使用Java-Keystore對XML進行簽名。什麼到目前爲止工作如下:

  • 我可以使用keytool創建一個密鑰對。
  • 然後,我使用創建的私鑰使用Java的XML數字簽名API(http://java.sun.com/developer/technicalArticles/xml/dig_signature_api/)簽署XML文件。
  • 我也能夠驗證簽名的文件。

我現在的問題是,如何確保數據真正來自可信系統。我的意思是,到目前爲止我所做的只是確保數據在簽名和驗證之間不被修改。我想要的是爲每個向我發送數據的系統頒發證書,並僅信任由我自己頒發的證書。但是,這怎麼做呢?

回答

1

您需要成爲您的客戶的CA(證書頒發機構)。每個客戶端都需要提供自己的客戶端證書請求,由您簽名,然後在發送之前用它們簽署每個文檔。這是經典的PKI管理問題,它產生了更優雅地解決這個問題的產品,但是您必須爲此付費。

+0

是的,這也是我的想法。我的問題更多的是我不知道,我只能接受自己發佈的證書,因爲在Sun的代碼示例中,證書的頒發者未被檢查。另請參閱Sun的以下引用,它完全描述了我的問題:「需要注意的是,XML簽名標準並未定義接收方如何在驗證簽名所需的密鑰中建立信任關係.KeyInfo元素僅僅是一個集合的信息,收件人可以用來幫助查找並隨後建立對該密鑰的信任。「 – user1225775 2012-03-01 17:15:18