fix:证书改动

This commit is contained in:
waner
2026-05-07 17:28:39 +08:00
parent 42b4ed1c38
commit 8229b3e44e
8 changed files with 35 additions and 26 deletions
@@ -28,7 +28,7 @@ import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/api/v1/crls")
@Tag(name = "CRL管理", description = "证书吊销列表导入、吊销明细查询和 CRL 删除接口")
@Tag(name = "CRL管理", description = "证书吊销列表导入、吊销明细查询和吊销明细删除接口")
public class CrlController {
private final CrlService crlService;
@@ -64,9 +64,9 @@ public class CrlController {
}
@PostMapping("/delete")
@Operation(summary = "删除CRL", description = "根据 CRL ID 删除 CRL 元数据及其吊销明细。删除后对应吊销记录不再参与证书运行状态判断。")
@Operation(summary = "删除CRL吊销明细", description = "根据 CRL 吊销明细 ID 删除单条吊销记录。删除后该吊销记录不再参与证书运行状态判断,CRL 元数据和同一 CRL 下的其他明细不会被删除。")
@ReplayProtected
@AuditedOperation(module = ModuleCode.KEY, action = ActionType.DELETE, summary = "删除证书吊销列表")
@AuditedOperation(module = ModuleCode.KEY, action = ActionType.DELETE, summary = "删除证书吊销明细")
@RequireInternalAuth(role = RoleCode.KEY_ADMIN, authLevel = AuthLevel.FULL)
public ApiResponse<Void> delete(@Valid @RequestBody IdRequest request) {
crlService.delete(request.getId());
@@ -30,16 +30,9 @@ public class Subject {
@Schema(description = "组织 O", example = "CISD")
private String org;
@Schema(description = "组织单元 OU", example = "Cert")
private String orgUnit;
@Schema(description = "组织单元 OU 列表,最多支持两个;传入后优先于 orgUnit", example = "[\"Organizational-1\",\"CCFCCB\"]")
@Schema(description = "组织单元 OU 列表,最多支持两个", example = "[\"Organizational-1\",\"CCFCCB\"]")
private List<String> orgUnits;
public String getDN() {
return toX500Name().toString();
}
public X500Name toX500Name() {
Assert.hasText(commonName, "通用名称不能为空");
X500NameBuilder builder = new X500NameBuilder(BCStyle.INSTANCE);
@@ -74,9 +67,6 @@ public class Subject {
}
}
}
if (units.isEmpty() && StringUtils.hasText(orgUnit)) {
units.add(orgUnit.trim());
}
Assert.isTrue(units.size() <= 2, "组织单元最多支持2个");
return units;
}
@@ -108,7 +98,6 @@ public class Subject {
}
}
if (!orgUnits.isEmpty()) {
subject.setOrgUnit(orgUnits.get(0));
subject.setOrgUnits(orgUnits);
}
Assert.hasText(subject.commonName, "通用名称不能为空");
@@ -22,6 +22,8 @@ public interface CrlRepository {
Optional<CertificateCrlEntity> findCrlById(Long id);
Optional<CertificateCrlEntity> findCrlByFingerprint(String fingerprint);
void deleteCrlById(Long id);
Optional<CertificateCrlRevokedEntity> findRevokedById(Long id);
void deleteRevokedById(Long id);
void deleteRevokedByCrlId(Long crlId);
Page<CertificateCrlRevokedEntity> pageRevoked(CrlListRequest request);
boolean existsRevoked(String issuerDn, String serialNumber);
@@ -123,6 +123,16 @@ public class CrlRepositoryImpl implements CrlRepository {
crlMapper.deleteById(id);
}
@Override
public Optional<CertificateCrlRevokedEntity> findRevokedById(Long id) {
return Optional.ofNullable(revokedMapper.selectById(id));
}
@Override
public void deleteRevokedById(Long id) {
revokedMapper.deleteById(id);
}
@Override
public void deleteRevokedByCrlId(Long crlId) {
revokedMapper.delete(new LambdaQueryWrapper<CertificateCrlRevokedEntity>()
@@ -300,10 +300,9 @@ public class CrlService {
@Transactional
public void delete(Long id) {
crlRepository.findCrlById(id)
.orElseThrow(() -> new BizException(ErrorCode.BAD_REQUEST.getCode(), "CRL不存在"));
crlRepository.deleteRevokedByCrlId(id);
crlRepository.deleteCrlById(id);
crlRepository.findRevokedById(id)
.orElseThrow(() -> new BizException(ErrorCode.BAD_REQUEST.getCode(), "CRL吊销明细不存在"));
crlRepository.deleteRevokedById(id);
}
private int saveRevokedRows(