compute x509 certificate thumbprint (#11717)

Co-authored-by: tienvn4 <tienvn4@ghtk.co>
This commit is contained in:
vunamtien 2022-01-19 04:43:29 +07:00 committed by GitHub
parent 6c8777fb21
commit caa13dd4d1
1 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,38 @@
package com.baeldung.certificate;
import org.apache.commons.codec.digest.DigestUtils;
import javax.xml.bind.DatatypeConverter;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
public class Thumbprint {
public static void main(String[] args) throws CertificateException, IOException, NoSuchAlgorithmException {
X509Certificate certObject = getCertObject("baeldung.pem");
System.out.println(getThumbprint(certObject));
}
public static X509Certificate getCertObject(String filePath) throws IOException, CertificateException {
try (FileInputStream is = new FileInputStream(filePath)) {
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
return (X509Certificate) certificateFactory.generateCertificate(is);
}
}
private static String getThumbprint(X509Certificate cert) throws NoSuchAlgorithmException, CertificateEncodingException {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(cert.getEncoded());
return DatatypeConverter.printHexBinary(md.digest()).toLowerCase();
}
private static String getThumbprintWithApache(X509Certificate cert) throws CertificateEncodingException {
return DigestUtils.sha1Hex(cert.getEncoded());
}
}