48 lines
2.5 KiB
Markdown
48 lines
2.5 KiB
Markdown
# 라이선스 중앙 인증 서버 설정 가이드
|
|
|
|
본 시스템은 고객 서버에서 라이선스 활성화 시, 중앙 관리 서버(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에 등록되지 않은 키는 사용할 수 없게 됩니다.
|