证书调试

This commit is contained in:
cheney 2026-05-12 10:20:03 +08:00
parent 0997ddbae2
commit 32907333d5
2 changed files with 36 additions and 5 deletions

View File

@ -19,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.security.cert.X509Certificate; import java.security.cert.X509Certificate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
@ -60,13 +61,26 @@ public class CertificateService {
result.setRecords(page.getRecords().stream().map(this::toItem).toList()); result.setRecords(page.getRecords().stream().map(this::toItem).toList());
return result; return result;
} }
@Transactional @Transactional
public ImportCertificateResponse importCertificate(MultipartFile file) { public ImportCertificateResponse importCertificate(MultipartFile file) {
try { if ( null == file || file.isEmpty() || file.getSize() < 1) {
//todo file空值判断 throw new BizException(ErrorCode.BAD_REQUEST.getCode(), "证书文件为空");
}
X509Certificate certificate = CertPemSupport.parseCertificate(file.getBytes()); byte[] data = null;
try {
data = file.getBytes();
} catch (IOException e) {
throw new BizException(ErrorCode.BAD_REQUEST.getCode(), "证书文件读取时 IO 异常");
}
return importCertificate(data);
}
@Transactional
public ImportCertificateResponse importCertificate(byte[] fileData) {
try {
X509Certificate certificate = CertPemSupport.parseCertificate(fileData);
// 终端证书入库前先固定 PKI 边界只接受当前有效 CA用途满足业务认证的实体/用户证书 // 终端证书入库前先固定 PKI 边界只接受当前有效 CA用途满足业务认证的实体/用户证书
assertValidTime(certificate); assertValidTime(certificate);
assertEndEntityCertificate(certificate); assertEndEntityCertificate(certificate);

View File

@ -21,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.Security; import java.security.Security;
import java.security.cert.X509CRL; import java.security.cert.X509CRL;
@ -83,8 +84,24 @@ public class TrustedCertService {
@Transactional @Transactional
public ImportCertificateResponse importTrusted(MultipartFile file, String alias) { public ImportCertificateResponse importTrusted(MultipartFile file, String alias) {
if ( null == file || file.isEmpty() || file.getSize() < 1) {
throw new BizException(ErrorCode.BAD_REQUEST.getCode(), "证书文件为空");
}
byte[] data = null;
try { try {
X509Certificate certificate = CertPemSupport.parseCertificate(file.getBytes()); data = file.getBytes();
} catch (IOException e) {
throw new BizException(ErrorCode.BAD_REQUEST.getCode(), "证书文件读取时 IO 异常");
}
return importTrusted(data, alias);
}
@Transactional
public ImportCertificateResponse importTrusted(byte[] fileData, String alias) {
try {
X509Certificate certificate = CertPemSupport.parseCertificate(fileData);
// 可信库只保存 CA 证书终端证书必须走 CertificateService避免信任锚和业务证书混用 // 可信库只保存 CA 证书终端证书必须走 CertificateService避免信任锚和业务证书混用
assertValidTime(certificate); assertValidTime(certificate);
assertTrustedCaCertificate(certificate); assertTrustedCaCertificate(certificate);