SHT30 온습도 모니터링 시스템 전체 소스(서버 PHP, STM32 펌웨어, SQL, 테스트). 전체 코드리뷰에서 도출된 보안 하드닝 10건 반영: - 요청 서명 HMAC-SHA256 전환(펌웨어 sig.c/서버 config.php/호스트 패리티 동시) - 재전송 방어 + 기본 API_KEY fail-closed + 디바이스 문자열 정제(api/sensor_data.php) - 오프라인 SMS 중복 발송 경합 제거(cron_heartbeat.php, 원자적 선점) - CSV 수식 주입 방지(monthly_report.php), 감사로그 회전 락(retention_cleanup.php) - 브루트포스 카운터 원자화(login.php), 예시 TOTP 비밀키 무효화, 마이그레이션 멱등화 _backup/(하드코딩 실 비밀값 포함)·config.local.php·런타임 상태는 .gitignore 제외.
35 lines
1.5 KiB
C
35 lines
1.5 KiB
C
/* =============================================================================
|
|
* server_ca.h - 서버(Cafe24) 루트 CA 인증서 (flash 임베드)
|
|
*
|
|
* tls_mbedtls.c 가 mbedtls_x509_crt_parse() 로 이 PEM 을 파싱하여
|
|
* 서버 인증서 체인을 검증한다(폐쇄망 → 런타임 CA 다운로드 불가, 펌웨어에 고정).
|
|
*
|
|
* 중요(mbedTLS PEM 요구사항):
|
|
* mbedtls_x509_crt_parse() 는 인자가 PEM 일 때, buflen 에 마지막 NUL 종결자가
|
|
* "포함"되어야 한다고 요구한다. 따라서 SERVER_CA_PEM_LEN 은 strlen() 이 아니라
|
|
* sizeof(SERVER_CA_PEM) (즉, 종결 NUL 1바이트 포함) 로 정의한다.
|
|
*
|
|
* 만료/교체(위험 R3, docs/stm32f407_migration_plan.md):
|
|
* 루트 CA 가 만료되거나 발급기관이 교체되면 TLS 연결이 불가해진다.
|
|
* 폐쇄망이라 OTA 로 갱신할 수 없으므로, 만료 시 펌웨어 재빌드/재배포가 필요하다.
|
|
* 교체 절차는 certs/README.md 참고.
|
|
* ===========================================================================*/
|
|
#ifndef SERVER_CA_H
|
|
#define SERVER_CA_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* PEM 형식 서버 루트 CA (NUL 종결 C 문자열). */
|
|
extern const char SERVER_CA_PEM[];
|
|
|
|
/* PEM 바이트 길이. **종결 NUL 을 포함**한다(mbedTLS PEM 파싱 요구사항).
|
|
* 즉 SERVER_CA_PEM_LEN == sizeof(SERVER_CA_PEM). */
|
|
extern const unsigned int SERVER_CA_PEM_LEN;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* SERVER_CA_H */
|