/* ============================================================================= * server_ca.c - 서버(Cafe24) 루트 CA 인증서 (PEM, flash 임베드) * * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PLACEHOLDER !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 아래 인증서는 *자리표시자(PLACEHOLDER)* 이며 실제 서버 검증에 사용할 수 없다. * 배포 전에 반드시 실제 Cafe24 서버의 루트 CA 체인으로 교체해야 한다. * * 교체 방법(요약, 자세히는 certs/README.md): * 1) 서버에서 체인 추출: * openssl s_client -showcerts -connect :443 -servername * 2) 루트(필요 시 intermediate + root 를 한 파일에 연결)를 PEM 으로 저장 * 3) PowerShell 로 이 파일 재생성: * ./certs/gen_ca_header.ps1 -PemPath cafe24_root.pem * * 동작(fail-closed): 이 자리표시자는 컴파일은 되지만 유효한 X.509 DER 이 아니므로 * tls_init() 의 mbedtls_x509_crt_parse() 단계에서 파싱이 실패한다. 그 결과 * tls_init() 이 음수를 반환하고 main 이 bsp_fatal() 로 안전 정지(부팅 중단)한다. * 즉 자리표시자 상태로는 펌웨어가 애플리케이션까지 도달하지 못한다(데이터 유출 없음). * 실제 CA 로 교체하면 정상 부팅 후 핸드셰이크에서 풀 검증이 수행된다. * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * * TODO(hw): 위 절차로 실제 Cafe24 루트 CA 로 교체할 것. (위험 R3) * ===========================================================================*/ #include "server_ca.h" /* ----------------------------------------------------------------------------- * PLACEHOLDER CA — 실제 인증서가 아님. 반드시 교체할 것. * * 형식 주의: * - 각 라인 끝에 명시적 "\n" 을 넣는다(PEM 라인 구분자). * - BEGIN/END 마커와 본문 base64 가 모두 있어야 mbedTLS PEM 파서가 인식한다. * - 마지막 라인 뒤 "\n" 까지 포함하고, C 문자열의 종결 NUL 은 LEN 에 반영된다. * ---------------------------------------------------------------------------*/ const char SERVER_CA_PEM[] = "-----BEGIN CERTIFICATE-----\n" "MIIB/zCCAaWgAwIBAgIUUExBQ0VIT0xERVJfRE9fTk9UX1VTRTAKBggqhkjOPQQD\n" "AjBFMQswCQYDVQQGEwJYWDEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MR8wHQYDVQQK\n" "DBZQTEFDRUhPTERFUiBDQSAtIEZBS0UwHhcNMjUwMTAxMDAwMDAwWhcNMjYwMTAx\n" "MDAwMDAwWjBFMQswCQYDVQQGEwJYWDEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MR8w\n" "HQYDVQQKDBZQTEFDRUhPTERFUiBDQSAtIEZBS0UwWTATBgcqhkjOPQIBBggqhkjO\n" "PQMBBwNCAAQEXAMPLEPLACEHOLDERKEYBYTESDONOTUSEINPRODUCTIONXXXXXXXX\n" "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo1Mw\n" "UTAdBgNVHQ4EFgQUUExBQ0VIT0xERVJfRkFLRV9DQV9YMB8GA1UdIwQYMBaAFFBM\n" "QUNFSE9MREVSX0ZBS0VfQ0FfWDAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMC\n" "A0gAMEUCIQDPLACEHOLDERSIGNATUREVALUEDONOTTRUSTXXXXXXXXXXXXXXAiEA\n" "PLACEHOLDERSIGNATUREVALUEDONOTTRUSTYYYYYYYYYYYYYYYYYYYYYYYYYY=\n" "-----END CERTIFICATE-----\n"; /* 길이: sizeof 는 종결 NUL 1바이트를 포함한다(mbedTLS PEM 요구사항). */ const unsigned int SERVER_CA_PEM_LEN = sizeof(SERVER_CA_PEM);