Open XPKI
본 문서는 오픈소스 공개 키 인프라 솔루션인 Open XPKI에 대한 포괄적인 기술 개요를 제공합니다.
PKI 개요
PKI는 디지털 신원을 확인하고 암호화된 통신을 가능하게 하는 일련의 하드웨어, 소프트웨어, 정책 및 절차의 집합이다. 한마디로 인터넷 상의 신분증 발급 및 관리 시스템이라고 생각할 수 있다.
PKI 핵심 요소
- Public Key and Private Key
각각의 사용자와 장치는 한 쌍의 키를 가집니다. 공개 키는 누구나 알 수 있도록 공개되고, 개인 키는 소유자만 비밀리에 보관한다. 이 두 키는 수학적으로 연결되어 있어, 한 키로 암호화한 데이터는 다른 키로만 복호화할 수 있다.
- Digital Certificate
공개 키의 소유자가 누구인지, 이 공개 키가 신뢰할 수 있는 기관에 의해 발행되었는지를 증명하는 전자 문서이다. 주민등록증이 개인의 신원을 증명하듯, 디지털 인증서는 특정 공개 키가 특정 개체(사람, 서버, 장치 등)에 속한다는 것을 공증해 준다.
- CA: Certificate Authority
디지털 인증서를 발행하고 관리하는 신뢰할 수 있는 제3자 기관이다. CA는 인증서에 서명함으로써 그 유효성을 보증한다. 웹사이트에 접속했을 때 브라우저가 "안전한 연결"이라고 표시하는 것은 해당 웹사이트의 인증서가 신뢰할 수 있는 CA에 의해 발행되었음을 의미한다.
- RA: Registration Authority
CA의 부담을 줄이기 위해, 사용자의 신원을 확인하고 인증서 발급 요청을 CA에 전달하는 역할을 한다. RA는 CA의 지침에 따라 사용자 인증 과정을 수행한다.
- CRL: Certificate Revocation List & OCSP: Online Certificate Status Protocol
만약 개인 키가 유출되거나 인증서의 유효성이 상실될 경우, 해당 인증서를 즉시 무효화해야 한다. CRL은 폐기된 인증서 목록을 제공하며, OCSP는 개별 인증서의 실시간 유효성 상태를 확인하는 데 사용된다.
Open XPKI 개요
Open XPKI는 이러한 PKI 시스템을 구축하고 운영하기 위한 강력하고 유연하며 확장 가능한 오픈소스 솔루션이다. 전통적인 사용 PKI 솔류션은 구축 비용이 높고 특정 공급업체에 종속될 수 있다는 단점이 있다. Open XPKI는 이러한 한계를 극복하고 기업 및 기관이 자체적으로 PKI를 구축하고 관리할 수 있도록 지원한다.
Open XPKI 주요 특징
- 오픈소스
소스 코드가 공개되어 있어 누구나 자유롭게 사용, 수정, 배포할 수 있다. 투명성을 제공하고, 특정 벤더 종속성을 피하며, 커뮤니티의 기여를 통해 지속적으로 발전할 수 있는 기반을 마련한다.
- 유연성과 확정성
모듈식 아키텍처와 워크플로우 기반 설계 덕분에 다양한 비즈니스 요구사항에 맞춰 PKI 프로세스를 사용자 정의하고 확장할 수 있다. 수백만 개의 인증서를 관리해야 하는 대규모 환경부터 소규모 조직까지 다양한 규모에 적용이 가능하다.
- 자동화
RESTful API 및 다양한 프로토콜 지원을 통해 인증서 발급, 갱신, 폐기 등의 과정을 자동화하여 운영 효율성을 극대화할 수 있다.
- 다양한 프로토콜 지원
SCEP, EST, ACME, CMC 등 산업 표준 프로토콜을 폭넓게 지원하여 다양한 클라이언트 및 장치와의 호환성을 보장한다.\
Open XPKI 아키텍처
Open XPKI는 모듈식, 워크플로우 기반의 유연한 아키텍처를 가지고 있다. 이는 시스템의 각 부분이 독립적으로 기능하며, 필요에 따라 쉽게 확장하거나 변경할 수 있다.
- 전체 시스템 개요
중앙의 코어 서버를 중심으로 다양한 컴포넌트들이 상호 작용하는 구조이다. 코어 서버는 주로 Perl 언어로 개발되었으며, 시스템의 모든 핵심 로직과 워크플로우를 처리한다. 사용자나 외부 시스템은 웹 사용자 인터페이스나 API를 통해 코어 서버와 상호작용한다.
- 주요 구성 요소
- Open XPKI Core Server
Open XPKI의 심장이라고 할 수 있는 부분이다. 대부분의 비지니스 로직과 PKI 관련 작업(인증서 발급, 폐기, 관리 등)이 이곳에서 처리된다. 코어 서버는 모듈식으로 설계되어 있어, 각 기능이 독립적인 Perl 모듈로 구현되어 있다. 특정 기능을 추가하거나 변경할 때 시스템 전체에 미치는 영향을 최소화하고, 재사용성을 높인다.
- 설정 계층
Open XPKI의 가장 강력한 특징 중 하나는 YAML 기반의 유연한 설정 시스템이다. 모든 시스템 설정, 워크플로우 정의, 사용자 역할, 인증서 정책 등이 YAML 파일로 관리된다.
- YAML의 강점
사람이 읽고 쓰기 쉬운 형식으로 복잡한 계층 구조를 직관적으로 표현할 수 있다.
- 오버레이 메커니즘
Open XPKI는 여러 설정 파일을 계층적으로 로드하고 병합하는 오버레이 메커니즘을 제공한다. 이는 기본 설정에 영향을 주지 않으면서 특정 환경이나 고객을 위한 맞춤형 설정을 적용할 수 있게 한다. 예를 들어, 프로덕션 환경과 개발 환경의 설정을 분리하거나, 특정 조직 단위에 대한 정책을 다르게 적용할 수 있다.
- 암호화 계층
PKI의 핵심은 암호화이다. OpenXPKI는 OpenSSL 라이브러리를 기반으로 암호화 작업을 수행한다. 업계 표준의 암호화 알고리즘 및 기능을 활용함을 의미한다.
- 키 저장 및 관리
CA의 개인 키는 매우 중요하므로, Open XPKI는 키를 안전하게 저장하고 관리하는 기능을 제공한다.
- 하드웨어 보안 모듈 연동
민감한 개인 키를 보호하기 위해 Open XPKI는 하드웨어 보안 모듈(HSM)과 연동을 지원한다. HSM은 암호화 키를 생성하고 저장하며, 암호화 연산을 수행하는 물리적 장치로 키의 유출 위험을 낮춘다.
- 데이터베이스 연동
Open XPKI는 시스템 운영에 필요한 모든 데이터를 데이터베이스에 저장한다. 인증서 정보, 발행된 인증서 목록, 사용자 계정, 감사 로그, 워크플로우 상태 등이 포함된다.
- 지원 데이터베이스
주로 PostgreSQL과 MySQL 지원. 데이터베이스 스키마는 PKI 요구사항을 반영하여 효율적으로 설계
- 데이터의 중요성
데이터베이스는 PKI의 핵심 자산이므로, 안정적인 운영과 정기적인 백업이 필수
- 워크플로우 엔진
Open XPKI의 가장 차별화된 기능 중 하나는 강력한 워크플로우 엔진이다. PKI의 모든 작업은 미리 정의된 워크플로우에 따라 진행된다.
- 프로세스 자동화 및 표준화
워크플로우를 통해 복잡한 PKI 프로세스를 표준화하고 자동화 할 수 있다. 오류를 줄이고 운영 효율성을 높여준다.
- 사용자 정의 기능
관리자는 YAML 파일을 통해 기존 워크플로우를 수정하거나, 조직의 특정 요구사항에 맞는 새로운 워크플로우를 정의할 수 있다.
- 상태 기반 처리
각 워크플로우는 특정 상태를 가지며, 이 상태에 따라 다음 동작이 결정된다. 예를 들어, 요청 → 승인대기 → 승인 또는 거부 동작에 따라 다음 상태로 진행된다.
- API(Application Programming Interface)
Open XPKI는 REST-like-API를 제공하여 외부 시스템과의 연동 및 자동화를 지원한다. Open XPKI를 기존의 IT 인프라에 쉽게 통합할 수 있다.
- 자동화의 핵심
API를 통해 인증서 발급, 폐기, 정보 조회 등의 작업을 프로그래밍 방식으로 수행할 수 있으므로, 대규모 환경에서의 인증서 수명 주기 관리를 자동화하는 데 매우 유용하다.
- Open API
API 문서는 OpenAPI 형식으로 제공되어 개발자들이 쉽게 API를 이해하고 활용할 수 있도록 돕는다.
Open XPKI 주요 기능 및 특징
Open XPKI는 단순한 인증서 발행 도구를 넘어, PKI 운영에 필요한 고급 기능과 특징을 제공한다.
- 인증서 관리
Open XPKI의 핵심 기능은 디지털 인증서의 전체 수명 주기 관리이다.
- 인증서 발급
사용자의 요청을 받아 유효성 검증 후 새로운 인증서를 발행한다. 다양한 발급 정책 적용이 가능하다.
- 인증서 갱신
만료가 임박한 인증서를 자동으로 또는 수동으로 갱신한다. 키 쌍을 유지하거나 새로운 키 쌍으로 갱신하는 옵션을 제공한다.
- 인증서 폐기
개인 키 유출, 사용자 퇴사 등 보안상의 이유로 인증서의 유효성을 조기에 중단시켜야 할 때 사용한다.
- Certificate Revocation List(CRL)
폐기된 인증서들의 목록을 주기적으로 발행하여 클라이언트가 이를 다운로드하여 유효성 여부를 확인할 수 있도록 한다.
- Online Certificate Status Protocol(OCSP)
클라이언트가 특정 인증서의 실시간 유효성 상태를 조회할 때 즉각적으로 응답을 제공한다. CRL보다 빠르고 효율적인 방법이다.
- 등록 프로토콜 지원
Open XPKI는 다양한 프로토콜을 지원하여 광범위한 클라이언트 및 장치와의 호환성을 보장한다.
- SCEP (Simple Certificate Enrollment Protocol)
Cisco 라우터 등 네트워크 장치에서 널리 사용되는 인증서 등록 프로토콜
- EST (Enrollment over Secure Transoport)
SCEP의 현대적인 대안으로 보다 강력한 보안과 유연성을 제공한다. Iot 기기 인증에 적합하다.
- SimpleCMC (Simple Certificate Management over CMS)
다양한 인증서 관리 작업을 지원하는 포괄적인 프로토콜
- ACME (Automated Certificate Management Environment)
Lets's Encrypt와 같은 서비스에서 사용하는 웹서버 인증서 자동 발급 및 갱신 프로토콜이다. 웹사이트 운영자가 인증서 관리를 쉽게 할 수 있도록 돕는다.
- 사용자 인터페이스 (WebUI)
Open XPKI는 Ember.js 프레임워크 기반의 현대적인 웹 사용자 인터페이스를 제공한다. 이 UI는 사용자 역할에 따라 맞춤형 기능을 제공한다.
- 사용자 인터페이스
일반 사용자들이 자신의 인증서를 요청하고, 다운로드하고 관리할 수 있도록한다.
- 운영자 인터페이스
PKI 운영자들이 인증서 발급 요청을 승인/거부하거나, 폐기 처리, 시스템 상태 모니터링 등의 작업을 수행할 수 있도록 한다.
- 관리자 인터페이스
시스템 설정 변경, 사용자 및 역할 관리, 워크플로우 정의 등 Open XPKI 시스템 전반을 관리할 수 있는 가장 높은 권한을 가진다.
- 다중 CA 및 SubCA 관리
하나의 Open XPKI 설치에서 여러 개의 독립적인 CA 또는 계층적인 SubCA를 운영이 가능하다.
- 계층적 PKI 구축
Root CA 아래에 여러 개의 Issuing CA를 두어 특정 목적에 따라 역할을 분리하고 강화할 수 있다.
- 관리 효율성
단일 시스템에서 다양한 CA를 통합 관리함으로써 운영 복잡성을 줄이고 효율성을 높일 수 있다.