diff --git a/app/Models/CaCertificate.php b/app/Models/CaCertificate.php index 2b23664..44ea8d9 100644 --- a/app/Models/CaCertificate.php +++ b/app/Models/CaCertificate.php @@ -26,6 +26,7 @@ class CaCertificate extends Model 'is_latest', 'issuer_name', 'issuer_serial', + 'family_id', 'cert_path', 'der_path', 'bat_path', diff --git a/app/Services/OpenSslService.php b/app/Services/OpenSslService.php index 7774b45..95caac4 100644 --- a/app/Services/OpenSslService.php +++ b/app/Services/OpenSslService.php @@ -418,6 +418,7 @@ class OpenSslService 'valid_to' => date('Y-m-d H:i:s', $newInfo['validTo_time_t']), 'issuer_name' => $cert->ca_type === 'root' ? $cert->common_name : ($root ? $root->common_name : 'Unknown Root'), 'issuer_serial' => $cert->ca_type === 'root' ? $newSerialHex : ($root ? $root->serial_number : null), + 'family_id' => $cert->ca_type === 'root' ? (string) \Illuminate\Support\Str::uuid() : ($root ? $root->family_id : $cert->family_id), ]; } finally { @@ -477,6 +478,7 @@ class OpenSslService 'valid_to' => $newData['valid_to'], 'issuer_name' => $newData['issuer_name'], 'issuer_serial' => $newData['issuer_serial'], + 'family_id' => $newData['family_id'], 'is_latest' => true, ]); diff --git a/database/migrations/2025_12_23_123913_create_ca_certificates_table.php b/database/migrations/2025_12_23_123913_create_ca_certificates_table.php index 5580568..d62f92e 100644 --- a/database/migrations/2025_12_23_123913_create_ca_certificates_table.php +++ b/database/migrations/2025_12_23_123913_create_ca_certificates_table.php @@ -33,6 +33,7 @@ return new class extends Migration $table->string('organization')->nullable(); $table->string('issuer_name')->nullable(); $table->string('issuer_serial')->nullable(); + $table->string('family_id')->nullable(); $table->dateTime('valid_from')->nullable(); $table->dateTime('valid_to')->nullable(); @@ -70,6 +71,9 @@ return new class extends Migration if (!Schema::connection('mysql_ca')->hasColumn('ca_certificates', 'issuer_serial')) { $table->string('issuer_serial')->nullable()->after('issuer_name'); } + if (!Schema::connection('mysql_ca')->hasColumn('ca_certificates', 'family_id')) { + $table->string('family_id')->nullable()->after('issuer_serial'); + } }); } }