本文系統實現 Java 證書體系,涵蓋密鑰庫創建、自簽名證書導出、公私鑰加解密、證書有效性驗證、數字簽名/驗證全流程。建議先閱讀「Java 加密技術(四)」了解 RSA 算法。
keytool -genkey -alias www.zlex.org -keyalg RSA -keystore d:\zlex.keystore
密碼 123456,生成 zlex.keystore。keytool -export -keystore d:\zlex.keystore -alias www.zlex.org -file d:\zlex.cer -rfc
得到 BASE64 編碼 zlex.cer。繼承 Coder(見第 1 篇),實現:
getPrivateKey/getPublicKey/getCertificate/getKeyStore:從 KeyStore/證書文件提取鑰材encryptByPrivateKey/decryptByPrivateKey:私鑰加解密encryptByPublicKey/decryptByPublicKey:公鑰加解密verifyCertificate:檢查證書過期/無效(支持 Date 參數)sign:私鑰簽名(Signature.getInstance(x509Certificate.getSigAlgName()))verify:公鑰驗證簽名CertificateCoderTest 兩測試:
test():公鑰加密「Ceritifcate」→ 私鑰解密,數據一致;驗證證書有效 → 通過testSign():私鑰加密「sign」→ 公鑰解密,數據一致;私鑰簽名 → 公鑰驗證簽名 → 狀態 true控制台輸出簽名 BASE64 字符串,驗證成功。至此完成證書驗證體系閉環。