feat:crl管理、错误信息中文化

This commit is contained in:
waner
2026-05-06 09:28:51 +08:00
parent d41e0790bd
commit 61280718dc
119 changed files with 2055 additions and 685 deletions
+8 -2
View File
@@ -5,8 +5,8 @@ spring:
servlet:
multipart:
# Spring/Tomcat multipart 解析上限;必须不小于业务上传上限,否则请求会在进入 Controller 前被拒绝。
max-file-size: ${TMS_FILE_STORAGE_MAX_FILE_SIZE_BYTES:104857600}
max-request-size: ${TMS_FILE_STORAGE_MAX_FILE_SIZE_BYTES:104857600}
max-file-size: ${TMS_MULTIPART_MAX_FILE_SIZE_BYTES:524288000}
max-request-size: ${TMS_MULTIPART_MAX_REQUEST_SIZE_BYTES:536870912}
profiles:
# 默认激活环境;可通过 --spring.profiles.active=prod 覆盖。
active: dev
@@ -49,6 +49,12 @@ tms:
upload-base-dir: ${TMS_FILE_STORAGE_UPLOAD_BASE_DIR:/home/tms/uploads}
# 上传文件大小上限(字节)。
max-file-size-bytes: ${TMS_FILE_STORAGE_MAX_FILE_SIZE_BYTES:104857600}
cert:
crl:
# CRL 导入临时目录;原始文件只在解析过程中暂存,导入结束后删除。
temp-dir: ${TMS_CERT_CRL_TEMP_DIR:/home/tms/tmp/crl-import}
# CRL 文件大小上限,默认 500MiB。
max-file-size-bytes: ${TMS_CERT_CRL_MAX_FILE_SIZE_BYTES:524288000}
init:
executor:
# 初始化执行模式:SIMULATE(仅模拟,不执行外部命令) / LOCAL(本机执行脚本命令)。
@@ -542,7 +542,7 @@ CREATE TABLE IF NOT EXISTS t_key_entity (
algo_type VARCHAR(16) NOT NULL COMMENT 'SM2 / RSA',
key_len INT NOT NULL COMMENT 'SM2 fixed 256 in V1',
key_idx INT NOT NULL COMMENT 'card key index, allowed range [2..8]',
backup_data VARCHAR(500) NOT NULL COMMENT 'SDFE_BackupUserKey output',
backup_data TEXT NOT NULL COMMENT 'SDFE_BackupUserKey output',
public_key VARCHAR(500) NOT NULL COMMENT 'public key, Base64/PEM',
p10_data VARCHAR(2000) NULL COMMENT 'PKCS#10 PEM content',
subject_dn VARCHAR(500) NULL COMMENT 'DN used when generating P10',
@@ -587,7 +587,7 @@ CREATE TABLE IF NOT EXISTS t_certificate (
CREATE TABLE IF NOT EXISTS t_trusted_cert (
id BIGINT PRIMARY KEY,
alias VARCHAR(128) NOT NULL,
alias VARCHAR(128) NULL,
subject_dn VARCHAR(1024) NOT NULL,
issuer_dn VARCHAR(1024) NOT NULL,
serial_number VARCHAR(128) NOT NULL,
@@ -614,7 +614,7 @@ CREATE TABLE IF NOT EXISTS t_certificate_crl (
crl_number VARCHAR(128) NULL,
algo_type VARCHAR(16) NOT NULL COMMENT 'SM2 in V1',
fingerprint VARCHAR(128) NOT NULL COMMENT 'SHA-256 fingerprint',
crl_data MEDIUMTEXT NOT NULL COMMENT 'CRL PEM content',
crl_data MEDIUMTEXT NOT NULL COMMENT 'reserved legacy CRL PEM content; large CRLs are not stored inline',
this_update DATETIME(3) NOT NULL,
next_update DATETIME(3) NULL,
revoked_count INT NOT NULL,
@@ -646,6 +646,25 @@ CREATE TABLE IF NOT EXISTS t_certificate_crl_revoked (
KEY idx_t_certificate_crl_revoked_revocation_time (revocation_time)
);
CREATE TABLE IF NOT EXISTS t_certificate_crl_import_task (
id BIGINT PRIMARY KEY,
task_id VARCHAR(64) NOT NULL,
original_filename VARCHAR(255) NULL,
file_size BIGINT NULL,
status VARCHAR(32) NOT NULL COMMENT 'PENDING/RUNNING/SUCCESS/FAILED',
fingerprint VARCHAR(128) NULL COMMENT 'SHA-256 fingerprint after successful parse',
crl_id BIGINT NULL,
revoked_count INT NOT NULL DEFAULT 0,
error_message VARCHAR(512) NULL,
started_at DATETIME(3) NULL,
finished_at DATETIME(3) NULL,
create_time DATETIME(3) NOT NULL,
update_time DATETIME(3) NOT NULL,
UNIQUE KEY uk_t_certificate_crl_import_task_task_id (task_id),
KEY idx_t_certificate_crl_import_task_status (status),
KEY idx_t_certificate_crl_import_task_create_time (create_time)
);
-- -----------------------------------------------------------------------------
-- 日志表
@@ -714,4 +733,4 @@ CREATE TABLE IF NOT EXISTS tms_backup_config (
last_backup_time datetime DEFAULT NULL COMMENT '上次执行时间',
sign_data varchar(255) NOT NULL COMMENT '其他字段的签名值',
PRIMARY KEY (`id`)
)
)
@@ -9,7 +9,7 @@ CREATE TABLE IF NOT EXISTS t_key_entity (
algo_type VARCHAR(16) NOT NULL COMMENT 'SM2 / RSA',
key_len INT NOT NULL COMMENT 'SM2 fixed 256 in V1',
key_idx INT NOT NULL COMMENT 'card key index, allowed range [2..8]',
backup_data VARCHAR(500) NOT NULL COMMENT 'SDFE_BackupUserKey output',
backup_data TEXT NOT NULL COMMENT 'SDFE_BackupUserKey output',
public_key VARCHAR(500) NOT NULL COMMENT 'public key, Base64/PEM',
p10_data VARCHAR(2000) NULL COMMENT 'PKCS#10 PEM content',
subject_dn VARCHAR(500) NULL COMMENT 'DN used when generating P10',
@@ -54,7 +54,7 @@ CREATE TABLE IF NOT EXISTS t_certificate (
CREATE TABLE IF NOT EXISTS t_trusted_cert (
id BIGINT PRIMARY KEY,
alias VARCHAR(128) NOT NULL,
alias VARCHAR(128) NULL,
subject_dn VARCHAR(1024) NOT NULL,
issuer_dn VARCHAR(1024) NOT NULL,
serial_number VARCHAR(128) NOT NULL,
@@ -81,7 +81,7 @@ CREATE TABLE IF NOT EXISTS t_certificate_crl (
crl_number VARCHAR(128) NULL,
algo_type VARCHAR(16) NOT NULL COMMENT 'SM2 in V1',
fingerprint VARCHAR(128) NOT NULL COMMENT 'SHA-256 fingerprint',
crl_data MEDIUMTEXT NOT NULL COMMENT 'CRL PEM content',
crl_data MEDIUMTEXT NOT NULL COMMENT 'reserved legacy CRL PEM content; large CRLs are not stored inline',
this_update DATETIME(3) NOT NULL,
next_update DATETIME(3) NULL,
revoked_count INT NOT NULL,
@@ -112,3 +112,22 @@ CREATE TABLE IF NOT EXISTS t_certificate_crl_revoked (
KEY idx_t_certificate_crl_revoked_subject_dn (subject_dn(512)),
KEY idx_t_certificate_crl_revoked_revocation_time (revocation_time)
);
CREATE TABLE IF NOT EXISTS t_certificate_crl_import_task (
id BIGINT PRIMARY KEY,
task_id VARCHAR(64) NOT NULL,
original_filename VARCHAR(255) NULL,
file_size BIGINT NULL,
status VARCHAR(32) NOT NULL COMMENT 'PENDING/RUNNING/SUCCESS/FAILED',
fingerprint VARCHAR(128) NULL COMMENT 'SHA-256 fingerprint after successful parse',
crl_id BIGINT NULL,
revoked_count INT NOT NULL DEFAULT 0,
error_message VARCHAR(512) NULL,
started_at DATETIME(3) NULL,
finished_at DATETIME(3) NULL,
create_time DATETIME(3) NOT NULL,
update_time DATETIME(3) NOT NULL,
UNIQUE KEY uk_t_certificate_crl_import_task_task_id (task_id),
KEY idx_t_certificate_crl_import_task_status (status),
KEY idx_t_certificate_crl_import_task_create_time (create_time)
);
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cisd.tms.modules.cert.mapper.CertificateCrlImportTaskMapper">
<resultMap id="CertificateCrlImportTaskResultMap" type="com.cisd.tms.modules.cert.entity.CertificateCrlImportTaskEntity">
<id property="id" column="id"/>
<result property="taskId" column="task_id"/>
<result property="originalFilename" column="original_filename"/>
<result property="fileSize" column="file_size"/>
<result property="status" column="status"/>
<result property="fingerprint" column="fingerprint"/>
<result property="crlId" column="crl_id"/>
<result property="revokedCount" column="revoked_count"/>
<result property="errorMessage" column="error_message"/>
<result property="startedAt" column="started_at"/>
<result property="finishedAt" column="finished_at"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="CertificateCrlImportTaskColumns">
id, task_id, original_filename, file_size, status, fingerprint, crl_id, revoked_count,
error_message, started_at, finished_at, create_time, update_time
</sql>
<select id="selectByTaskId" parameterType="string" resultMap="CertificateCrlImportTaskResultMap">
SELECT <include refid="CertificateCrlImportTaskColumns"/>
FROM t_certificate_crl_import_task
WHERE task_id = #{taskId}
LIMIT 1
</select>
<update id="updateRunning">
UPDATE t_certificate_crl_import_task
SET status = 'RUNNING',
error_message = NULL,
started_at = #{startedAt},
update_time = NOW(3)
WHERE task_id = #{taskId}
</update>
<update id="updateSuccess">
UPDATE t_certificate_crl_import_task
SET status = 'SUCCESS',
crl_id = #{crlId},
fingerprint = #{fingerprint},
revoked_count = #{revokedCount},
error_message = NULL,
finished_at = #{finishedAt},
update_time = NOW(3)
WHERE task_id = #{taskId}
</update>
<update id="updateFailed">
UPDATE t_certificate_crl_import_task
SET status = 'FAILED',
error_message = #{errorMessage},
finished_at = #{finishedAt},
update_time = NOW(3)
WHERE task_id = #{taskId}
</update>
</mapper>
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cisd.tms.modules.cert.mapper.CertificateCrlRevokedEntityMapper">
<insert id="insertBatch">
INSERT INTO t_certificate_crl_revoked (
id, crl_id, issuer_dn, serial_number, subject_dn, algo_type, crl_number,
revocation_time, revocation_reason, create_time, update_time
)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.id}, #{item.crlId}, #{item.issuerDn}, #{item.serialNumber},
#{item.subjectDn}, #{item.algoType}, #{item.crlNumber},
#{item.revocationTime}, #{item.revocationReason},
#{item.createTime}, #{item.updateTime}
)
</foreach>
</insert>
</mapper>