반응형

보안은 나날이 강화되고 있고 앱을 올릴때도 SSL이 필수가 되었고(물론 예외 처리는 가능) 웹은 말할 필요가 없다.

일찍이 크로스사이트가 막혔고 이젠 혼합콘텐츠란걸 알게 되었다.

 

혼합콘텐츠란 SSL이 적용된 사이트에서 SSL이 적용되지 않은 사이트의 컨텐츠(이미지, 동영상, 스크립트, CSS 등)를 불러오는 방식인데 자세한 내용은 구글의 블로그를 참고하자

(https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content?hl=ko)

자세히 잘 설명되어 있다.

읽다보면 "나(구글)님께서 널 때렸는데 니가 왜 맞아야 하는지 설명해줄께" 처럼 아주 잘 와닿는다.

 

혼합컨텐츠가 뭔진 알았을테고

혼합컨텐츠로 인해 컨텐츠가 불러와지지 않는 심각한 문제가 생겼다면 해결하는 방법은 다음과 같다.

 

크롬은 사진처럼 주소창의 자물쇠 아이콘을 눌러 사이트 설정 > 안전하지 않은 콘텐츠의 차단(기본값)을 허용으로 바꿔주면 동작한다.

(익스플로러는 망한 브라우저니 대충 알아서 옵션 설정을 하면 됨)

 

그럼 이게 왜 필요한지 생각해보자

특수한 경우이긴 하지만 이 특수한 경우를 접하게 되면 사람 돌아버린다.

하루 이틀 시간 낭비는 예사다.

인생 짧으니 내 경험을 공유하고자 한다.

 

상황은 이러하다.

동영상이나 음원처럼 용량이 큰 파일을 CDN을 통해 서비스한다 치자

(회사의 CDN 주소를 공개하기엔 뭐하니 웹상에 있는 클래식 음원을 하나 불러와보자.)

그럼 플레이어로 불러와야 하는데 그냥 박아넣으면 용용죽는다. 안된다.

 

 

그럼 어쩌야 할까?

이렇게 해야 한다.

 

        var player = new Audio('http://www.hochmuth.com/mp3/Haydn_Cello_Concerto_D-1.mp3');

        player.controls = false; //컨트롤 안보여줄래요

        document.body.appendChild(player);

        player.play();

 

넣었다 뺐다 넣었다 뺐다

 

쉬운가?

찾아내는데 2시간 넘게 걸렸다. -_-

 

 

그다음은 혼합컨텐츠 문제

이렇게 처리해도 내 사이트가 SSL인데 위에 저 클래식 음원은 SSL을 지원하지 않는다면 HTTP로 호출할 수 밖에 없다.

크롬의 검사 기능을 통해 왜 플레이가 안되는지 확인해보면 ERR_CERT_AUTHORITY_INVALID 오류를 내뱉고 있다.

 

안타깝게도 국내 CDN서비스 업체들은 아직 상황 판단을 못하는건지 HTTPS를 지원하지 않는다.

모 대기업 CLOUD 상담센터 상담원에게 HTTPS지원안하냐? 계획없냐? 물어보면 "SSL CDN 어버버 네???" 이런다.

한숨 나와서 그냥 아니에요~ 하고 끊어버렸다.

 

이건 방법이 없다.

HTTPS를 지원하는 CDN업체를 찾아서 하던지 (가령 Cloudflare) 아니면 위에 언급했듯이 이용자에게 브라우저 설정을 바꿔주세요 라고 할 수 밖에 없다.

2020년 현재일 기준으로 테스트 해본 결과 크롬, 엣지, 모바일 사파리, 모바일 크롬 브라우저 중 혼합 컨텐츠를 차단시키는 브라우저는 PC크롬브라우저가 유일했다.

아마 다른 부라우저들도 수년내로 따라가지 않을까 싶다.

보안은 그렇게 강화하며 따라가곤했으니

반응형
Posted by Hippalus

댓글을 달아 주세요

반응형

쌀중의 쌀 닝기미

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

앱소스가 바뀐것도 아니고 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

댓글을 달아 주세요