2012-06-19 86 views
4

有什麼辦法檢查上傳的證書是否真的是pfx證書?我試着用下面的代碼:用struts檢查pfx文件類型

LazyValidatorForm lazyForm = (LazyValidatorForm) actionForm; 
FormFile cerFile = (FormFile) lazyForm.get("cerFile"); 

if (!cerFile.getContentType().equals("application/x-pkcs12")) { 
    /** return error code **/ 
} 

然而,大部分的時間,內容類型是應用程序/八位字節流,這是沒有用的

回答

1

你可以嘗試上傳的文件加載到一個KeyStore

LazyValidatorForm lazyForm = (LazyValidatorForm) actionForm; 
FormFile cerFile = (FormFile) lazyForm.get("cerFile"); 

KeyStore keyStore = KeyStore.getInstance("PKCS12"); 
keyStore.load(cerFile.getInputStream(), null); 

即使.PFX包含密碼保護的私有密鑰,該.PFX應該被載入(這是沒有密碼根本沒用,但它應該加載)。

如果您在加載後沒有發生異常,並且keyStore.size()等於1,則它必須是.pfx文件。

+0

聰明的把戲。感謝:D –