[Push 서버] APNS 인증서 CA (인증 기관) 변경에 따른 조치 안내
Apple Push Notification 서비스(이하 APNs)를 위한 인증서의 인증 기관(CA) 변경으로 Apple의 Push 서비스를 사용하는 고객사는 아래와 같은 조치가 필요 합니다.
이 문서는 필요한 점검 및 조치 방법을 안내합니다.
1. 배경
Apple은 APNs의 CA 기관 변경을 2025년 1월 20일(샌드박스/개발) 및 2월 24일(프로덕션/운영)에 진행할 예정입니다.
이에 따라 APNs를 사용하는 모든 개발자는 새 서버 인증서(SHA-2 루트: USERTrust RSA 인증 기관 인증서)를 포함하도록 애플리케이션의 Trust Store를 업데이트해야 합니다.
2. 점검 및 조치 방법
2.1 점검 방법
2.1.1 SHA-256 기준 검사
다음 명령어를 실행하여 Provider가 설치된 시스템의 상태를 확인합니다.
명령어 입력 후 키 저장소의 비밀번호는 기본값은 changeit 입니다.
keytool -list -keystore $JAVA_HOME/lib/security/cacerts | grep "E7:93:C9:B0:2F:D8:AA:13:E2:1C:31:22:8A:CC:B0:81:19:64:3B:74:9C:89:89:64:B1:74:6D:46:C3:D4:CB:D2"
$JAVA_HOME 변수는 Provider 모듈이 구동할 때 사용하는 JDK 경로입니다.
정상 결과:
키 저장소 비밀번호 입력: changeit
인증서 지문(SHA-256): E7:93:C9:B0:2F:D8:AA:13:E2:1C:31:22:8A:CC:B0:81:19:64:3B:74:9C:89:89:64:B1:74:6D:46:C3:D4:CB:D2
[정상 결과]로 확인 될 경우, 별도의 추가 조치가 필요하지 않습니다.
비정상 결과:
키 저장소 비밀번호 입력: changeit
# 인증서 지문 관련 내용이 없음
다음 단계(SHA-1 기준 검사)로 이동한다.
2.1.2 SHA-1 기준 검사
******************************************************************************************
**** 2.1.1 에서 검사한 방법으로 정상인 경우 이 단계를 진행하실 필요가 없습니다. ****
******************************************************************************************
구버전 Java는 인증서 지문 알고리즘을 SHA-1로 사용하기 때문에 다음의 방법으로 추가로 조회한다.
명령어 입력 후 키 저장소의 비밀번호는 기본값은 changeit 입니다.
keytool -list -keystore $JAVA_HOME/lib/security/cacerts | grep "2B:8F:1B:57:33:0D:BB:A2:D0:7A:6C:51:F7:0E:E9:0D:DA:B9:AD:8E"
$JAVA_HOME 변수는 Provider 모듈이 구동할 때 사용하는 JDK 경로입니다.
정상 결과:
키 저장소 비밀번호 입력: changeit
인증서 지문(SHA-1): 2B:8F:1B:57:33:0D:BB:A2:D0:7A:6C:51:F7:0E:E9:0D:DA:B9:AD:8E
[정상 결과]로 확인 될 경우, 별도의 추가 조치가 필요하지 않습니다.
비정상 결과:
키 저장소 비밀번호 입력: changeit
# 인증서 지문 관련 내용이 없음
2.2 비정상 결과인 경우, 조치 방법
Provider 모듈의 실행 스크립트(start.sh)를 수정하고 패치 파일을 추가하여 문제를 해결할 수 있습니다.
해당 작업은 Provider의 재기동이 필요한 작업입니다.
수정 완료 후 반드시 Provider 모듈을 재기동 하신 후 APNS와 FCM의 서비스 테스트를 진행하시기 바랍니다.
2.2.1 패치 파일 복사
본문에 첨부된 provider_cacerts 파일을 다운로드 합니다.
다운로드한 provider_cacerts파일을 Provider 설치 루트 경로에 복사합니다.
Provider 설치 예시 경로: /uracle/server/provider
2.2.2 실행 스크립트 수정
Provider의 실행 스크립트(start.sh)에 다음 Java 실행 옵션을 추가합니다:
-Djavax.net.ssl.trustStore=/uracle/server/provider/provider_cacerts
예시:
변경 전:
# 중략
nohup ${JAVA_HOME}/bin/java -jar target/$TARGET_JAR -classpath $CLASSPATH 1>/dev/null 2>&1 &
# 중략
변경 후:
# 중략
nohup ${JAVA_HOME}/bin/java -Djavax.net.ssl.trustStore=/uracle/server/provider/provider_cacerts -jar target/$TARGET_JAR -classpath $CLASSPATH 1>/dev/null 2>&1 &
# 중략
참고사항:
Provider 버전에 따라 JAVA_OPTS 변수가 있는 경우, 해당 변수에 옵션을 추가하는 방식으로도 적용할 수 있습니다.
3. 요청 사항
고객사께서는 가능한 빠른 시일 내에 점검을 진행해 주시기 바랍니다.
점검 결과 문제가 발견되거나 추가 지원이 필요한 경우, 즉시 당사로 연락 주시기 바랍니다.
원활한 서비스 제공을 위해 신속한 대응이 중요하오니 적극적인 협조 부탁드립니다.