# 라이선스 중앙 인증 서버 설정 가이드 본 시스템은 고객 서버에서 라이선스 활성화 시, 중앙 관리 서버(Developer's DB)에 접속하여 키의 유효성을 2차 검증하는 기능을 제공합니다. 이를 위해 중앙 DB 서버에 테이블을 생성하고, 고객 서버의 설정 파일(`.env`)에 접속 정보를 입력해야 합니다. ## 1. 중앙 DB 테이블 생성 (Developer Server) 중앙 라이선스 DB(MySQL)에 접속하여 아래 SQL을 실행하여 `issued_licenses` 테이블을 생성하십시오. 이 테이블은 생성된 모든 라이선스 키를 저장합니다. ```sql CREATE TABLE IF NOT EXISTS issued_licenses ( id INT AUTO_INCREMENT PRIMARY KEY, license_key TEXT NOT NULL, module_code VARCHAR(50) NOT NULL, license_type VARCHAR(20) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, used_at TIMESTAMP NULL, is_revoked BOOLEAN DEFAULT FALSE, INDEX idx_license_key (license_key(255)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ``` ## 2. 고객 서버 설정 (Client Server) 고객사에 배포되는 서버의 `.env` 파일에 아래와 같이 중앙 라이선스 DB 접속 정보를 추가해야 합니다. 이 정보가 없으면 로컬 검증만 수행합니다. **주의**: 고객 서버에서 외부(중앙 DB)로 접속이 가능하도록 방화벽 설정(3306 포트 등)이 되어야 합니다. ```env # Central License Verification DB LICENSE_DB_HOST=your-central-db-ip.com LICENSE_DB_PORT=3306 LICENSE_DB_USER=license_readonly_user LICENSE_DB_PASSWORD=your_secure_password LICENSE_DB_NAME=your_license_db ``` > **보안 권장사항**: `LICENSE_DB_USER`는 `issued_licenses` 테이블에 대한 **SELECT 권한만** 부여된 계정을 사용하십시오. ## 3. 작동 원리 1. **키 생성**: 개발자가 `tools/license_manager.cjs generate` 명령을 실행하면, 로컬 키 생성과 동시에 중앙 DB(`issued_licenses`)에 키가 저장됩니다. (개발자 PC에도 `.env` 설정 필요) 2. **활성화 시도**: 고객이 라이선스 키를 입력하면, 서버는 먼저 로컬에서 서명을 검증합니다. 3. **원격 검증**: 로컬 검증이 통과되면, 서버는 `.env`에 설정된 중앙 DB에 잠시 접속하여 해당 키가 존재하는지 확인합니다. 4. **결과 처리**: 중앙 DB에 키가 존재하면 활성화가 완료되고, DB 연결은 즉시 해제됩니다. 이 방식을 통해 임의로 키를 생성해내더라도 중앙 DB에 등록되지 않은 키는 사용할 수 없게 됩니다.