개발 일지

📱 iOS 푸시 알림 오류 해결기 (APNs 인증서 문제)

backend.log 2025. 5. 27. 19:00
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 인증서가 만료되었거나, 운영 환경에 개발용 인증서가 적용되어 있는 경우 발생하는 대표적인 오류.

🔍 원인 분석

  1. 푸시 전송 코드에서 stream_socket_client() 함수로 APNs 서버에 연결 시도
  2. ssl 인증서를 stream_context_set_option() 으로 적용
  3. 개발용 인증서(.pem)를 운영 서버에서 사용 중인 상태
  4. 일부 사용자에게만 실패하는 이유는 푸시 토큰 발급 시점과 인증서 호환 문제

🔧 해결 방법

  1. iOS 개발자에게 운영용 배포 인증서(.pem) 파일 요청
  2. 기존 인증서 파일을 교체
  3. config 파일과 .env 파일에서 인증서 경로 수정
  4. 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