반응형

쌀중의 쌀 닝기미

언제부턴가 갑자기 푸시가 날라가질 않음

앱소스가 바뀐것도 아니고 developer.apple.com에서 발급받은 인증서가 바뀐것도 아님.

그런데 안됨.


JAVA로 만든 푸시 서버는 계속 아래와 같은 오류만 뱉음

remote host closed connection during handshake apns


원래 키체인에서 p12파일 추출하면 되던게 아무리 인증서를 다시 발급받고 푸시 인증서를 재발급 받아도 안됨

찾아보니 닝기미 뭐가 꼬인건지 아래와 같이 해야만 발송됨


1.기본적인 인증서 발급과정은 동일함.

developer.apple.com > member center > Identifiers > App IDs > 푸시 설정할 앱 선택 > 



CSR파일을 통해 푸시 인증서 발급 후 다운로드

다운로드 받은 후 실행



응용프로그램 > 유틸리티 > 키체인 실행 후 애플개발자사이트의 app id로 인증서가 등록되었는지 체크

중요 : 인증서 옆에 삼각형이 반드시 표시되어야 함!



삼각형이 없다면 키체인에 등록된 개발자 인증서(개발용과 배포용)를 모두 지워버린 후 developer.apple.com > member center > Certificates로 이동하여 개발용, 배포용 인증서를 다시 만듬.

이때 CertificateSigningRequest.certSigningRequest 파일이 필요한데 이 파일도 그냥 다시 만들어버리면 됨.

만드는 방법은 키체인 > 키체인 접근 > 인증서지원 > 인증 기관에서 인증서 요청메뉴에서 CSR파일을 생성하면 됨



이때 또 중요한점!

사용자 이메일 주소는 애플 개발자로 등록된 이메일이고 일반이름은 아무거나 입력하면 됨.

요청항목은 CA로 이메일 보냄이 아닌 디스크에 저장됨 라디오 버튼 선택 후 본인이 키 쌍 정보 지정을 반드시 체크해줘야 함!

더럽게 복잡하고 지저분한 애플 인증서 발급 시스템! 망해라 애플!



다시 올아와 키체인에 등록된 인증서 옆에 삼각형이 있음을 확인된 경우

삼각형을 눌러 인증서와 키(열쇠) 2개 행을 모두 선택하여 2개 항목 보내기 하면 암호를 물어보고 암호를 알아서 입력하면 p12파일이 생성됨

원랜 이 상태로 JAVA APNS에서 사용하면 되는데 이게 안먹힘!!!

remote host closed connection during handshake apns

이 p12파일로 푸시 테스트를 하면 이 메세지가 뜸! ㅅㅍㅅㅍㅅㅍㅅㅍ 망해라 애플!


2.이제부터 해결책을 제시함

일단 p12가 추출되었다면 

다운받은 인증서 developer_identity.cer 파일을 같은 폴더 안에 놓고

p12파일은 편의상 mykey.p12로 이름을 바꿔주고

cer파일은 developer_identity로 이름을 바꿔줌

(안바꿔줘도 되지만 안바꿔주려면 아래 터미널에서 실행할 명령어를 알아서 바꿔주길)


터미널을 실행시킴

인증서와 p12파일이 존재하는 폴더로 이동함.

이동하는 방법은 터미널에서 cd라고 치고 한칸 띄고 finder에서 그냥 해당 폴더를 드래그 드롭 하면 알아서 경로가 셋팅됨. 엔터만 치면 됨

참 쉽죠~?  망해라 애플!


이제부턴 터미널에서 다음과 같이 입력함

openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM

openssl pkcs12 -nocerts -in mykey.p12 -out mykey.pem

openssl pkcs12 -export -inkey mykey.pem -in developer_identity.pem -out iphone_dev.p12


참고로

openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM 를 입력하면 그냥 커맨드가 실행되고 아무런 변화가 없음

openssl pkcs12 -nocerts -in mykey.p12 -out mykey.pem 를 입력하면 암호를 계속 물어보는데 이때 앞서 p12파일 추출할때 입력한 암호를 계속 입력하면 됨



openssl pkcs12 -export -inkey mykey.pem -in developer_identity.pem -out iphone_dev.p12 를 입력하면 또 마찬가지로 암호를 요구하므로 또 p12파일 추출할때 입력한 암호를 입력하면 됨


이제 끝임

이과정까지 끝내면 드디어 p12파일이 생성됨

파일 이름은 iphone_dev.p12 파일임.


이 파일을 JAVA APNS 프로그램에서 사용해야 함.

이름은 알아서 바꿔주면 됨.

아직 테스트는 안해봤지만 개발용 p12말고 실서비스도 마찬가지일거라 판단됨.

이 무슨 80년대식 인증서 발급 쌩쑈인가!

애플의 작태가 이해가 안됨.

푸시 발송을 좀 간소화 하면 안되나? 망해라 애플!


이상 애플 푸시 인증서 발급 부터 open SSL을 통한 p12파일 추출 끝

다시한 번 외쳐본다.


망해라 애플!


반응형
Posted by Hippalus
,