728x90
반응형
📱 iOS 푸시 알림 오류 해결기 (APNs 인증서 문제)
🧨 문제 상황
일부 사용자에게 iOS 푸시 알림이 도착하지 않음. 서버 로그에서는 SSL 인증 관련 오류 발생.
SSL operation failed with code 1. OpenSSL Error messages:
error:14094415:SSL routines:ssl3_read_bytes:sslv3 alert certificate expired
→ APNs 통신에 사용하는 .pem 인증서가 만료되었거나, 운영 환경에 개발용 인증서가 적용되어 있는 경우 발생하는 대표적인 오류.
🔍 원인 분석
- 푸시 전송 코드에서 stream_socket_client() 함수로 APNs 서버에 연결 시도
- ssl 인증서를 stream_context_set_option() 으로 적용
- 개발용 인증서(.pem)를 운영 서버에서 사용 중인 상태
- 일부 사용자에게만 실패하는 이유는 푸시 토큰 발급 시점과 인증서 호환 문제
🔧 해결 방법
- iOS 개발자에게 운영용 배포 인증서(.pem) 파일 요청
- 기존 인증서 파일을 교체
- config 파일과 .env 파일에서 인증서 경로 수정
- openssl 명령어로 인증서 유효기간 확인
openssl x509 -in [인증서경로].pem -text -noout
✅ 개선 사항
- 운영/개발 환경 구분을 위한 설정 정리
- .pem 인증서 갱신 주기 사전 캘린더 등록
- 푸시 실패 로그 개선 (user_id, token, error 포함)
- CI/CD 파이프라인에 인증서 만료 체크 포함 고려
📘 추가로 알아두면 좋은 정보
APNs 인증서 구분
종류 | 설명 |
---|---|
개발용 인증서 | api.sandbox.push.apple.com 에 사용 |
배포용 인증서 | api.push.apple.com 또는 gateway.push.apple.com 에 사용 |
p12 → pem 변환 명령어
openssl pkcs12 -in certificate.p12 -out push_cert.pem -nodes -clcerts
🧾 정리
- 원인: 운영 서버에서 만료되었거나 잘못된 인증서 사용
- 해결: 운영용 인증서 교체 및 경로 수정
- 교훈: 인증서 관리 자동화 및 환경 구분 철저히
이번 경험을 통해 인증서 만료나 설정 누락으로 인한 장애를 사전에 방지하는 중요성을 다시 느꼈다. 비슷한 오류를 겪는 분들께 도움이 되길 바랍니다. ✅
728x90
반응형
'개발 일지' 카테고리의 다른 글
iOS 푸시 알림(APNs) 구성 및 실무 정리 (0) | 2025.05.28 |
---|