Java使用X509Certificate获取证书详情
场景
我们在进行加密相关项目的开发时会使用到各种证书,证书文件以.cer后缀结尾。双击打开后可以看到证书的详细信息,包括版本、序列号、签名算法、颁发者、使用者、有效期、公钥等信息。那么我们如何使用java程序获取相应的信息返回给前端展示呢?

证书的内容和意义如表所示:
| 证书内容 | 意义 |
|---|---|
| Version | 告诉这个X.509证书是哪个版本的,目前有v1、V2、v3 |
| Serial Number | 由证书分发机构设置证书的序列号 |
| Signature Algorithm Identifier | 证书采用什么样的签名算法 |
| Issuer Name | 证书发行者名,也就是给这个证书签名的机构名 |
| Validity Period | 证书有效时间范围 |
| Subject Name | 被证书发行机构签名后的公钥拥有者或实体的名字,采用X.500协议,在Internet上的标志是惟一的。例如:CN=Java,OU=Infosec,O=Infosec Lab,C=CN表示一个subject name。 |
最终效果
{
"code": 200,
"data": {
"effDate": "2023-07-03 17:44:47",
"serialNumber": "00a4cbbc64a19f000003",
"issuerDN": "CN=1111, C=CN",
"type": "EC",
"expDate": "2024-07-02 17:44:47",
"subjectDN": "CN=52000000121320000000_5200000012, O=123, O=00, L=123, L=123, C=CN",
"sigAlgName": "SM3的SM2签名"
},
"msg": "成功"
}
代码实现
/**
*
* @param fileName
* @return 证书详情
*/
public Object getCert(String fileName){
fileName =filePath+File.separator+fileName;
JSONObject jsonObject = new JSONObject();
CertificateFactory cf = null;
X509Certificate cert = null;
try {
cf = CertificateFactory.getInstance("X.509");
FileInputStream in = new FileInputStream(fileName);
cert = (X509Certificate) cf.generateCertificate(in);
} catch

本文介绍了如何使用Java编程语言中的X509Certificate类获取和处理证书文件中的详细信息,包括版本、序列号、签名算法、颁发者和有效性等,并给出了代码示例。

1832

被折叠的 条评论
为什么被折叠?



