Security Profiles
SK일렉링크 충전기 운영 시스템(CSMS)과 안정적이고 보안된 통신을 위해, 모든 충전기 제조사는 아래의 보안 요구사항을 반드시 준수해야 합니다. 본 가이드라인을 충족하지 못하는 충전기는 당사 CSMS와의 연동이 제한될 수 있습니다.
공장 출하용 비밀번호, 클라이언트 인증서, 개인키 등 충전기의 신원을 증명하는 자격 증명을 유출하거나 아래 요구사항을 지키지 않아 발생하는 해킹, 데이터 변조, 부정 사용 등 모든 2차 사고는 제조사의 귀책 사유입니다. 이에 대한 모든 법적·기술적 책임은 제조사에 있으며 에스케이일렉링크 주식회사는 면책됩니다. 또한 보안 사고 발생 시 해당 충전기 및 관련 제조사의 모든 충전기에 대한 서비스 연동이 영구적으로 중단될 수 있습니다.
- 제조사 자격증명은 충전기의 신원을 증명하는 핵심 자격 증명이므로, 제조사의 가장 높은 보안 등급으로 관리되어야 하며 절대로 외부로 노출되어서는 안 됩니다.
- 충전기 내부 저장소에 비밀번호를 보관해야 하는 경우, 평문 저장을 절대 금지합니다. 제조사는 장치 보안 모듈, 암호화 저장소, 접근 제어, 로그 마스킹 등 적절한 보호 조치를 적용해야 합니다.
- 충전기는 내부 진단 로그, 디버그 메시지, 기타 어떤 데이터 파일에도 비밀번호의 원본 값을 기록해서는 안 됩니다. (OCPP 1.6 Security Whitepaper A01.FR.12)
Security Profile 개요
OCPP Security Profile은 충전기와 CSMS 사이의 WebSocket 연결을 어떤 방식으로 보호하고 충전기 신원을 확인할지 정의하는 보안 등급입니다.
- Security Profile 0 또는 1
- 연결 보호: 암호화되지 않은 WebSocket
- SK일렉링크 연동 기준: 신규 연동 불가
- Security Profile 2
- TLS 1.2 이상 지원. TLS 1.3 이상 권장
- SK일렉링크 연동 기준: 최소 요구사항
- Security Profile 3
- TLS 1.2 이상 지원. TLS 1.3 이상 권장. 클라이언트 인증서 적용
- SK일렉링크 연동 기준: 적용 권장
OCPP v1.6
OCPP v1.6의 보안 요구사항은 OCPP 1.6 Security Whitepaper에서 정의한 보안 확장과 OCPP 보안 인증 절차를 기준으로 해석합니다. OCPP v1.6 자체의 기본 메시지 집합만으로는 운영 환경의 인증서 관리와 자격 증명 보호 요구사항을 충분히 표현하지 못하므로, 제조사는 OCPP 1.6 Security Whitepaper의 보안 요구사항을 함께 참고해야 합니다.
Security Profile 2: TLS + Basic Authentication
OCPP v1.6 Security Profile 2는 다음을 요구합니다.
- CSMS 접속 시
wss://기반 TLS 1.2 이상 연결을 사용합니다. - WebSocket 핸드셰이크 단계에서 HTTP Basic Authentication을 사용합니다.
- Basic Authentication의 사용자명은 CSMS가 안내한 충전기 식별자와 일치해야 합니다.
- 비밀번호는 제조사 또는 충전기 단위로 부여된 초기 자격 증명 또는 운영 자격 증명을 사용합니다.
Security Profile 3: TLS + Client Side Certificates
OCPP v1.6 Security Profile 3는 TLS 연결에 더해 충전기 측 클라이언트 인증서를 사용합니다. 즉, 충전기는 CSMS에 접속할 때 자신의 클라이언트 인증서를 제시하고, CSMS는 해당 인증서가 신뢰 가능한 인증기관 체인에 의해 발급되었는지와 해당 인증서가 접속 중인 충전기 식별자와 일치하는지를 확인합니다.
Security Profile 3 적용 시 제조사는 다음을 준비해야 합니다.
- 충전기별 클라이언트 인증서와 개인키를 안전하게 생성·보관합니다.
- 개인키는 충전기 외부로 유출되지 않도록 보호합니다.
- 인증서의 Subject, SAN, Serial Number, Fingerprint 등으로 충전기 식별자를 확인할 수 있어야 합니다.
- 인증서 만료, 교체, 폐기, 재발급 절차를 운영할 수 있어야 합니다.
- CSMS가 신뢰하는 루트 또는 중간 인증기관 체인으로 충전기 인증서를 검증할 수 있어야 합니다.
OCPP v2.1
OCPP v2.1은 OCPP v2.0.1의 응용 계층 구조와 보안 운영 모델을 기반으로 확장된 버전입니다. 따라서 OCPP v2.1 충전기의 보안 프로필 설명은 OCPP 2.x 계열의 보안 프로필, 인증서 관리, 보안 이벤트 운영 지침을 함께 기준으로 삼아야 합니다.
Security Profile 2: TLS + Basic Authentication
OCPP v2.1에서 Security Profile 2를 사용하는 경우에도 핵심 요구사항은 동일합니다.
- CSMS 접속은 TLS 1.2 이상으로 보호된 WebSocket 연결을 사용합니다.
- WebSocket 핸드셰이크 단계에서 HTTP Basic Authentication을 수행합니다.
- 충전기 식별자와 인증 자격 증명이 CSMS에 등록된 정보와 일치해야 합니다.
- 비밀번호 또는 인증 토큰은 평문 로그에 남기지 않아야 합니다.
OCPP v2.1 충전기는 메시지 본문에서 EVSE 식별자를 별도로 표현할 수 있지만, 별도 안내가 없는 경우 접속 엔드포인트의 충전기 식별자와 인증에 사용하는 식별자는 CSMS가 안내한 정책을 따라야 합니다.
Security Profile 3: TLS + Client Side Certificates
OCPP v2.1에서 Security Profile 3를 사용하는 경우, 충전기는 클라이언트 인증서를 통해 CSMS에 자신의 신원을 증명합니다. OCPP 2.x 계열은 인증서 설치, 조회, 삭제, 서명 요청, 인증서 상태 확인 등 인증서 수명주기 관리를 위한 메시지와 운영 절차를 포함합니다.
Security Profile 3 적용 시 제조사는 다음을 고려해야 합니다.
- 최초 접속 전에 사용할 부트스트랩 인증서 또는 Security Profile 2 기반 초기 인증 절차를 준비합니다.
- 충전기에서 개인키와 CSR을 생성하고, CSMS 또는 지정된 인증기관을 통해 운영용 클라이언트 인증서를 발급받는 흐름을 지원합니다.
- 루트/중간 인증기관 인증서 설치 및 갱신 절차를 지원합니다.
- 운영용 클라이언트 인증서의 만료 전 갱신, 폐기, 교체 절차를 지원합니다.
- 인증서 관련 보안 이벤트를 진단 로그와 운영 이벤트로 확인할 수 있어야 합니다.
자격 증명 Workflow
각 제조사는 당사로부터 모델을 기준으로 공장 출하용 제조사 자격증명을 사전에 채번받아 전달되게 됩니다. 반드시 연동 전 운영 담당자에게 문의하십시오.
SP2
- 충전기는 CSMS와의 최초 통신 개시 시, 반드시 이 부여받은 초기 비밀번호를 사용하여 인증을 시도해야 합니다.
- CSMS는 제조사 자격증명을 이용하여 접속 충전기에 대해 운영 자격증명을 EVSE로 재주입합니다. (BootNotification 이후 ChangeConfiguration 또는 SetVariables이 발행됩니다.)
- 충전기는 주입된 운영 자격증명을 안전한 곳에 보관하고, 새로운 자격 증명을 이용하여 CSMS로 재접속합니다.
SP3
SP3 운영용 클라이언트 인증서는 mTLS 핸드셰이크 도중 만들어지는 값이 아닙니다. 아직 운영 인증서가 없는 충전기는 다음 순서로 SP3로 승격할 수 있습니다.
SK일렉링크 CSMS는 SP2용 엔드포인트와 SP3(mTLS)용 엔드포인트가 분리되어 있습니다. SP3 엔드포인트의 서버 인증서 발급 CA는 SP2 엔드포인트와 다를 수 있습니다. 따라서 충전기가 SP3 엔드포인트에 접속하려면, 해당 서버 인증서를 검증할 수 있는 CSMS Root CA(SP3 서버 Root CA)가 Trust Store에 설치되어 있어야 합니다. 이 Root CA 설치는 승격 절차 중 SP2 연결 상태에서 OCPP 메시지를 통해 수행됩니다.
승격 절차 (공통)
- 충전기가 SP2 엔드포인트(TLS + Basic Authentication)로 CSMS에 최초 접속합니다.
- CSMS가 SP3 엔드포인트의 서버 인증서를 검증할 수 있도록 SP3 서버 Root CA 인증서를 충전기에 설치합니다.
- OCPP 2.1:
InstallCertificate(certificateType:CSMSRootCertificate) - OCPP 1.6:
InstallCertificate(certificateType:CentralSystemRootCertificate) — Security Extension 네이티브 메시지
- OCPP 2.1:
- 충전기가 개인키와 CSR을 생성하여 인증서 서명 요청을 전송합니다.
- CSMS가 클라이언트 인증서 발급 CA로 CSR을 서명하고, 인증서 체인(Leaf + 중간 인증서)을 충전기에 내려줍니다.
- 충전기가 인증서를 로컬에 설치하고, 설치 성공을 CSMS에 응답합니다.
- CSMS가 SP3 엔드포인트 URL을 충전기에 설정합니다.
- OCPP 2.1:
SetNetworkProfile로 SP3 연결 프로파일 저장 - OCPP 1.6:
ChangeConfiguration(Key:CentralSystemUrl또는 제조사별 URL 키)
- OCPP 2.1:
- CSMS가 Security Profile을 3으로 전환하도록 지시합니다.
- OCPP 2.1:
SetVariables(Component:SecurityCtrlr, Variable:SecurityProfile, Value:3) - OCPP 1.6:
ChangeConfiguration(Key:SecurityProfile, Value:3)
- OCPP 2.1:
- 충전기가 설정을 영구 저장하고, SP3 엔드포인트에 Security Profile 3(mTLS)로 재접속합니다. 재접속 시 충전기는 2단계에서 설치한 SP3 서버 Root CA로 서버 인증서 체인, hostname/SNI, 유효기간, serverAuth 용도를 검증하며, 검증 실패 시 TLS 연결을 중단합니다.
- CSMS가 클라이언트 인증서의 identity와 chargePointId binding을 검증하고, SP3를 확정합니다.
이 흐름에서 서명 대상은 충전기 ↔ CSMS mTLS 연결에 사용하는 운영용 클라이언트 인증서입니다. ISO 15118 Plug & Charge에 사용되는 계약 인증서(V2G 인증서)는 별도 체계이며 이 흐름으로 발급되지 않습니다.
CSR 요구사항
충전기가 생성하는 CSR은 다음 조건을 충족해야 합니다.
| 항목 | 요구사항 |
|---|---|
| 키 알고리즘 | ECDSA P-256 (secp256r1) 권장. RSA 2048 이상도 허용 |
| Signature Algorithm | SHA-256 이상 |
| Subject CN | 충전기 식별자(chargePointId) 포함 |
| Subject Organization | 제조사 법인명 |
| 키 보호 | 개인키는 충전기 외부로 절대 유출되지 않아야 하며, 보안 모듈(TPM, SE)에 저장 권장 |
발급 인증서 프로파일
CSMS CA가 발급하는 운영용 클라이언트 인증서는 다음 프로파일을 따릅니다.
| 항목 | 요구사항 |
|---|---|
| Key Usage | digitalSignature |
| Extended Key Usage | clientAuth (id-kp-clientAuth, OID 1.3.6.1.5.5.7.3.2) |
| Basic Constraints | CA=false |
| Validity Period | CSMS CA 정책에 따름 (일반적으로 1~2년) |
| Signature Algorithm | SHA-256 with ECDSA 또는 SHA-256 with RSA |
| PEM Chain Order | Leaf (충전기 인증서) → Intermediate CA. Root CA는 포함하지 않음 |
| Maximum PEM Size | 5,800 bytes (OCPP 2.1 CertificateSigned 최대 payload 기준) |
인증서 Identity Binding
CSMS는 mTLS 핸드셰이크에서 제시된 클라이언트 인증서의 identity가 접속 중인 충전기와 일치하는지 반드시 검증합니다.
| 항목 | 규칙 |
|---|---|
| Subject CN | CSMS에 등록된 chargePointId와 정확히 일치해야 합니다 (예: 60130038-01) |
| WebSocket URL 일치 | 인증서 Subject CN과 WebSocket 접속 URL path의 chargePointId가 불일치하면 인증이 거부됩니다 |
| 인증서 단위 | chargePointId(WebSocket endpoint) 단위. 하나의 chargePointId에 하나의 클라이언트 인증서가 발급됩니다 |
| SAN (Subject Alternative Name) | 선택사항. 사용 시 chargePointId를 포함해야 합니다 |
OCPP 2.1 승격 흐름
OCPP 2.1 충전기는 표준 메시지를 사용합니다.
| 단계 | 메시지 | 주요 파라미터 | 성공 응답 | 실패 시 동작 |
|---|---|---|---|---|
| Root CA 설치 | InstallCertificate.req | certificateType: CSMSRootCertificate, certificate (PEM) | Accepted | Rejected → Root CA 형식/유효성 확인 후 재시도. Failed → 충전기 Trust Store 용량 부족 |
| CSR 전송 | SignCertificate.req | certificateType: ChargingStationCertificate | Accepted | Rejected → CSR 재생성 후 재시도 |
| 인증서 전달 | CertificateSigned.req | certificateType: ChargingStationCertificate, certificateChain (PEM) | Accepted | Rejected → CSMS가 재발급 시도 |
| 엔드포인트 변경 | SetNetworkProfile.req | configurationSlot, connectionData: { ocppCsmsUrl, securityProfile: 3, transportProtocol, ocppVersion, ocppInterface } | Accepted | Rejected → SP2 URL 유지, 수동 조치 |
| SP 전환 지시 | SetVariables.req | Component: SecurityCtrlr, Variable: SecurityProfile, Value: 3 | Accepted 또는 RebootRequired | Rejected/UnknownVariable → SP2 유지, 운영자 조치 |
OCPP 1.6 승격 흐름
OCPP 1.6 충전기는 OCPP 1.6 Security Whitepaper에서 정의한 Security Extension 네이티브 메시지(InstallCertificate, SignCertificate, CertificateSigned)를 사용합니다. 이 메시지들은 표준 OCPP 1.6 Core 메시지셋에는 포함되지 않지만, Security Extension 규격에서 독립 메시지로 정의되어 DataTransfer 래핑 없이 직접 전송됩니다.
ISO 15118 Plug & Charge 관련 인증서 메시지(V2GRootCertificate 등)는 별도의 DataTransfer 래핑(vendorId: org.openchargealliance.iso15118pnc)을 사용합니다. SP3 승격에 사용되는 Security Extension 메시지와 혼동하지 않도록 주의합니다.
| 단계 | 메시지 | certificateType | 성공 응답 | 실패 시 동작 |
|---|---|---|---|---|
| Root CA 설치 | InstallCertificate.req | CentralSystemRootCertificate | Accepted | Rejected → Root CA 형식/유효성 확인 후 재시도. Failed → Trust Store 용량 부족 |
| CSR 전송 | SignCertificate.req | — (csr 필드만 포함) | Accepted | Rejected → CSR 재생성 후 재시도 |
| 인증서 전달 | CertificateSigned.req | — (certificateChain 필드) | Accepted | Rejected → CSMS가 재발급 시도 |
| SP 전환 지시 | ChangeConfiguration.req | — | Accepted 또는 RebootRequired | Rejected/NotSupported → SP2 유지, 운영자 조치 |
메시지 Payload Schema
InstallCertificate.req (CSMS → EVSE)
{
"certificateType": "CentralSystemRootCertificate",
"certificate": "-----BEGIN CERTIFICATE-----\n...root CA PEM...\n-----END CERTIFICATE-----"
}
SignCertificate.req (EVSE → CSMS)
{
"csr": "-----BEGIN CERTIFICATE REQUEST-----\nMIIB...base64...\n-----END CERTIFICATE REQUEST-----"
}
CertificateSigned.req (CSMS → EVSE)
{
"certificateChain": "-----BEGIN CERTIFICATE-----\n...leaf...\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n...intermediate...\n-----END CERTIFICATE-----"
}
PEM 데이터 내 줄바꿈은 \n으로 이스케이프합니다. 인증서 체인 순서는 Leaf → Intermediate이며, Root CA는 포함하지 않습니다.
OCPP 1.6 Security Extension의 InstallCertificate에서는 certificateType 값으로 CentralSystemRootCertificate를 사용합니다. OCPP 2.1의 CSMSRootCertificate와 동일한 용도이며 이름만 다릅니다.
SP3 승격에 직접 관련된 InstallCertificate, SignCertificate, CertificateSigned만 Security Extension 네이티브 메시지로 전송됩니다. 인증서 조회(GetInstalledCertificateIds)와 삭제(DeleteCertificate)는 ISO 15118 PnC DataTransfer 래핑(vendorId: org.openchargealliance.iso15118pnc)을 통해 전송됩니다.
SecurityProfile 전환 지시
CSMS는 CertificateSigned 응답으로 인증서 설치 성공(Accepted)을 확인한 후에만 Security Profile 전환을 지시합니다. 엔드포인트 URL 변경과 SecurityProfile 변경은 별도 메시지로 순서대로 전송합니다.
엔드포인트 URL 변경 (SecurityProfile 변경 전 선행)
- OCPP 2.1:
SetNetworkProfile— 지정 configurationSlot에 SP3 엔드포인트 URL, securityProfile: 3, transport/version 정보를 포함한 NetworkConnectionProfile을 저장 - OCPP 1.6:
ChangeConfiguration— Key:CentralSystemUrl(또는 제조사별 URL 설정 키), Value: SP3 mTLS 엔드포인트 URL
SecurityProfile 변경
- OCPP 2.1:
SetVariables— Component:SecurityCtrlr, Variable:SecurityProfile, Value:3 - OCPP 1.6:
ChangeConfiguration— Key:SecurityProfile, Value:3
응답 처리 규칙
| 응답 상태 | 충전기 동작 |
|---|---|
Accepted | 설정 영구 저장, 즉시 연결 종료 후 SP3(mTLS)로 재접속 |
RebootRequired | 설정 저장, CSMS가 Reset 명령을 전송할 때까지 대기하거나 자체 재부팅 후 SP3로 접속 |
Rejected / NotSupported | SP2 유지, CSMS 운영자에게 조치 요청 |
충전기는 재접속 후 반드시 BootNotification을 전송하여 CSMS에 정상 등록을 확인해야 합니다.
Security Profile 3으로 접속하는 충전기는 클라이언트 인증서만으로 인증됩니다. SP3 접속 시 HTTP Basic Auth header는 사용하지 않습니다.
충전기가 새 클라이언트 인증서로 SP3(mTLS) 접속에 성공하고 CSMS가 identity binding을 확인하면, 해당 충전기의 SP2 접속은 영구 차단됩니다(HTTP/WebSocket upgrade 단계에서 401 또는 연결 거부). SP3가 확정된 충전기는 반드시 클라이언트 인증서를 사용하여 접속해야 합니다.
인증서 발급 후 SP3 접속 성공 전까지는 grace period로서 SP2 접속이 허용됩니다. 이는 인증서 설치 실패, SecurityProfile 전환 실패, 재부팅 실패 등 예외 상황에서 충전기가 복구할 수 있는 경로를 보장하기 위한 것입니다.
SP3 승격 상태 전이
CSMS는 충전기별로 다음 상태를 관리합니다. OEM은 각 상태에서 허용되는 접속 방식을 기준으로 구현해야 합니다.
| 상태 | 의미 | 허용 접속 |
|---|---|---|
SP2_ACTIVE | 운영 client cert 없음, 정상 SP2 운영 | SP2 |
CSR_PENDING | CSR 발급/서명 진행 중 | SP2 |
CERT_INSTALLED_PENDING_SP3 | 인증서 설치 완료, SP3 첫 접속 성공 대기 (grace period) | SP2 + SP3 시도 |
SP3_CONFIRMED | SP3 첫 성공 및 identity binding 완료 | SP3 only (SP2 차단) |
RENEWAL_DUAL_CERT | 갱신 중, 기존/신규 cert 모두 허용 | SP3 |
REVOKED_TEMP_SP2 | 운영자 승인 긴급 복구 (최대 72시간) | SP2 (제한 시간) |
인증서 갱신
운영용 클라이언트 인증서는 유효기간이 있으며, 만료 전에 갱신해야 합니다. 갱신 절차는 최초 발급과 동일한 SignCertificate → CertificateSigned 흐름을 재사용합니다.
갱신 트리거
| 주체 | OCPP 2.1 | OCPP 1.6 |
|---|---|---|
| CSMS | 인증서 만료 30일 전 TriggerMessage(requestedMessage: SignChargingStationCertificate) 전송 | 인증서 만료 30일 전 ExtendedTriggerMessage(requestedMessage: SignChargePointCertificate) 전송 |
| 충전기 | 로컬 정책에 따라 만료 임박 시 자발적으로 SignCertificate 전송 | 로컬 정책에 따라 만료 임박 시 자발적으로 SignCertificate 전송 |
갱신 흐름
- 충전기가 새 개인키와 CSR을 생성합니다.
- SP3 연결 상태에서
SignCertificate(OCPP 2.1 / OCPP 1.6 모두 네이티브)를 전송합니다. - CSMS가 CA를 통해 서명된 새 인증서를
CertificateSigned로 전달합니다. - 충전기가 새 인증서를 설치하고,
Accepted응답을 반환합니다. - 충전기가 새 인증서로 SP3 재접속합니다.
인증서 갱신 중에는 기존 SP3 연결을 유지한 채 새 인증서를 수령합니다. 새 인증서 설치가 완료된 후에만 재접속합니다.
갱신 실패 처리
| 실패 시나리오 | 충전기 동작 |
|---|---|
| 새 인증서 설치 실패 | 기존 인증서를 유지하고 SP3 연결을 계속합니다. CSMS에 Rejected 응답을 반환합니다. |
| 새 인증서로 SP3 접속 실패 | 기존 인증서로 재접속을 시도합니다. 기존 인증서 삭제는 새 인증서 검증 성공 전까지 금지합니다. |
| 인증서가 이미 만료된 경우 | SP3 접속 불가 → 긴급 복구 절차(아래 인증서 폐기 및 긴급 교체 참조)를 따릅니다. |
| CSMS 시간과 충전기 시간 불일치 | 인증서 notBefore/notAfter 검증 실패 가능 → 충전기는 NTP 등으로 시간을 동기화해야 합니다. |
CSMS는 갱신 기간(rollover period) 동안 기존 인증서와 새 인증서를 동시에 허용합니다.
인증서 폐기 및 긴급 교체
인증서가 손상, 유출되었거나 교체가 필요한 경우:
- CSMS 운영자가 해당 충전기의 인증서를 폐기(revoke) 처리합니다. CSMS는 내부 인증서 registry에서 해당 serial을 denylist에 등록합니다.
- 폐기된 인증서로 SP3 접속을 시도하면 TLS 핸드셰이크 단계에서 거부됩니다.
- CSMS 운영자가 해당 충전기의 SP2 임시 접속을 수동으로 승인합니다 (시간 제한 있음).
- 충전기가 SP2(Basic Auth)로 재접속합니다.
- 일반 SP3 승격 흐름을 처음부터 다시 수행합니다.
- SP3 접속 성공 후 SP2 임시 허용이 자동 해제됩니다.
- SP2 임시 복귀는 CSMS 운영자의 수동 승인이 필요합니다.
- 임시 허용 기간은 최대 72시간이며, 초과 시 자동 만료됩니다.
- 정상 운영 중에는 SP2 다운그레이드가 차단됩니다.
Root CA 교체 (Rollover)
CA 인증서가 변경되는 경우, 신뢰 방향에 따라 두 가지 흐름으로 구분됩니다.
CSMS 서버 인증서 Trust Anchor 교체
충전기가 CSMS 서버 인증서를 검증하는 데 사용하는 Root/Intermediate CA를 교체하는 절차입니다.
- CSMS가 기존 SP3 연결을 통해 새 Root/Intermediate CA 인증서를 충전기 Trust Store에 설치합니다.
- OCPP 2.1:
InstallCertificate(certificateType:CSMSRootCertificate) - OCPP 1.6:
InstallCertificate(certificateType:CentralSystemRootCertificate) — Security Extension 네이티브 메시지
- OCPP 2.1:
GetInstalledCertificateIds(OCPP 2.1) 또는 동등 조회로 설치를 확인합니다.- 충전기가 overlap 기간 동안 기존 CA와 새 CA를 모두 신뢰합니다.
- 모든 충전기에 새 CA 설치가 확인되면, CSMS 서버 인증서를 새 CA 체인으로 전환합니다.
- 충분한 안정화 기간 후 기존 Root CA를 충전기 Trust Store에서 삭제합니˚다.
- OCPP 2.1:
DeleteCertificate - OCPP 1.6:
DeleteCertificate— Security Extension 네이티브 메시지
- OCPP 2.1:
클라이언트 인증서 발급 CA 교체
CSMS가 충전기 클라이언트 인증서를 검증하는 데 사용하는 발급 CA를 교체하는 절차입니다.
- CSMS가 새 발급 CA를 내부 trust store에 등록하고, 기존 CA와 새 CA를 동시에 신뢰합니다.
- 이후 갱신되는 충전기 인증서는 새 CA로 발급됩니다.
- 갱신 트리거를 통해 기존 충전기의 인증서를 순차적으로 새 CA 기반으로 교체합니다.
- 모든 충전기 인증서가 새 CA로 전환되면, CSMS trust store에서 기존 발급 CA를 제거합니다.
기존 Root CA 삭제는 모든 충전기의 전환이 확인된 후에만 수행합니다. 조기 삭제 시 충전기가 CSMS 서버 인증서를 검증하지 못하거나(서버 trust anchor), CSMS가 충전기 인증서를 검증하지 못해(발급 CA) 접속 불가 상태가 됩니다.
보안 이벤트 보고
충전기는 인증서 수명주기에 관련된 보안 이벤트를 CSMS에 보고해야 합니다.
메시지 응답을 통한 결과 보고
인증서 설치 성공/실패는 해당 메시지의 응답 status로 우선 확인됩니다.
| 이벤트 | OCPP 2.1 응답 | OCPP 1.6 응답 |
|---|---|---|
| 인증서 설치 성공 | CertificateSigned.conf(status: Accepted) | CertificateSigned.conf(status: Accepted) |
| 인증서 설치 실패 | CertificateSigned.conf(status: Rejected) | CertificateSigned.conf(status: Rejected) |
| Root CA 설치 성공 | InstallCertificate.conf(status: Accepted) | InstallCertificate.conf(status: Accepted) |
| Root CA 설치 실패 | InstallCertificate.conf(status: Rejected/Failed) | InstallCertificate.conf(status: Rejected/Failed) |
SecurityEventNotification을 통한 보안 이벤트
메시지 응답과 별도로, 보안 관련 이상 상황은 SecurityEventNotification으로 보고합니다.
| 이벤트 | OCPP 2.1 eventType | OCPP 1.6 (Security Extension) |
|---|---|---|
| CSMS 서버 인증서 검증 실패 | InvalidCSMSCertificate | SecurityEventNotification (type: InvalidCentralSystemCertificate) |
| 충전기 인증서 검증 실패 | InvalidChargingStationCertificate | SecurityEventNotification (type: InvalidChargePointCertificate) |
| TLS 버전 불일치 | InvalidTLSVersion | SecurityEventNotification (type: InvalidTLSVersion) |
| 개인키 변조/유출 감지 | TamperDetectionActivated | SecurityEventNotification (type: TamperDetectionActivated) |
SecurityEventNotification은 OCPP 1.6 Security Whitepaper에서 정의된 Security Extension 네이티브 메시지입니다. DataTransfer 래핑 없이 직접 전송됩니다.
예외 사항
2025년 08월 08일 이전에 출하된 충전기는 위 접속 보안 내용의 적용 대상에서 제외됩니다.
참고 문서
- Open Charge Alliance, OCPP 1.6 Security Whitepaper (4th edition)
- Open Charge Alliance, OCPP Certification Procedure v2.0
- Open Charge Alliance, OCPP 2.1
- Open Charge Alliance, Security Operations Guide