[iphone] iPhone Simulator에 자체 서명 된 인증서를 추가 하시겠습니까?

API의 끝점에 자체 서명 된 인증서가 있습니다. 시뮬레이터를 사용하여 몇 가지 테스트를 시도하고 있지만 “신뢰할 수없는 서버 인증서”를 받고 있습니다.

.crt 파일을 다운로드하기 위해 시뮬레이터에서 safari를 사용하려고했지만 작동하지 않는 것 같습니다.

iPhone Simulator는 어디에서 키 체인을 얻습니까? 애플리케이션이 작동하도록 신뢰할 수있는 인증서를 추가하려면 어떻게해야합니까?

최신 정보

CA를 만든 다음 iPhone 프로비저닝 도구를 사용하여 CA 인증서를 추가하여 작동하도록했습니다. 그런 다음 API 서버에서 해당 CA 인증서로 서명 된 인증서를 가질 수 있었고 NSConnection이 방금 작동했습니다. 어떤 이유로 든 자체 서명 된 인증서를 사용하여 작동하도록 할 수 없습니다. 프로비저닝 소프트웨어를 사용하여이 작업을 다시 시도해야합니다.

내 진짜 질문은 어떻게 이것을 시뮬레이터에서 작동시킬 수 있습니까? 시뮬레이터는 실제 컴퓨터의 키 체인을 사용한다고 생각합니다.



답변

누군가가 여전히 그 문제에 직면한다면 Info를 위해서 :

.cer 파일을 실행중인 Simulator 창으로 끌어다 놓기 만하면됩니다. Safari가 깜박 인 다음 인증서 (또는 인증 기관)에 대한 가져 오기 대화 상자가 표시됩니다.

iOS 7 Simulator에서 작동합니다 (i Think는 iOS 6에서도 작동했습니다).


답변

시뮬레이터에서 인증서 끌어서 놓기가 작동하지 않는다는 것을 알게 된 사람들을 위해 추가 단계를 추가하는 최근 변경 사항 있습니다.

시뮬레이터는 루트 CA를 신뢰하도록 명시 적으로 알려야합니다. 다음으로 이동하여이를 수행하십시오.

일반-> 정보-> 인증서 신뢰 설정-> 특정 인증서에 대한 “루트 인증서에 대한 완전 신뢰 사용”

여기 에서 전체 답변을 참조 하십시오 .


답변

나는 몇 달 동안 같은 문제를 겪었고 오늘 마침내 다음과 같이 해결했습니다.

ADVTrustStore

github에서 ADVTrustStore 라는 프로젝트를 사용하려고합니다 . 멋진 마술을하지만 시뮬레이터의 루트 신뢰 저장소에 인증서를 올바르게 설치합니다.

사용자 지정 인증서를 설치하는 단계

# Clone the repo
git clone https://github.com/ADVTOOLS/ADVTrustStore.git

# Enter the repo directory
cd ADVTrustStore/

# Copy your .crt file 
cp somewhere/something.crt my.crt

# conver to a .pem file
openssl x509 -in my.crt -out my.pem -outform PEM

# Install the pem in the simulators
./iosCertTrustManager.py -a my.pem

이 프로세스를 사용하여 자체 서명 된 인증서로 SSL 사임을 사용하여 회사 방화벽 뒤에서 GoogleStreetView 이미지를 올바르게 렌더링 할 수있었습니다.

배경

CharlesProxy를 사용하고 있었고 시뮬레이터에 인증서를 올바르게 설치하고 있지만 설정-프로필 섹션 에 표시되지 않았습니다 . 그런 다음 몇 가지 검색 후이 도구를 발견했습니다. 아마도 몇 가지 다른 도구가있을 수 있지만 제 경우에는 끌어서 놓기가 모든 경우에 제대로 작동하지 않았습니다. Safari는 괜찮지 만 내 응용 프로그램은 아닙니다.


답변

Charles가 자체 서명 된 인증서를 시뮬레이터의 키 체인에 설치하는 데 사용하는 쉘 스크립트를 살펴보십시오. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

또한보십시오:

시뮬레이터에 자체 인증서를 설치하려면 Safari를 통해 기기에 설치 한 다음 결과 행을 기기에서 TrustStore.sqlite3시뮬레이터로 복사해야 할 수 있습니다 .


답변

OS X Catalina를 사용하는 사람은 https://forums.developer.apple.com/thread/124056을 확인 하십시오 .

Catalina는 현재 데스크톱, 문서 및 다운로드 폴더에 대한 액세스를 차단하고 있습니다. 인증서 파일을 공유 폴더로 이동하고 거기에서 시뮬레이터로 파일을 끌어다 놓습니다.


답변

사용하여 아이폰의 백업 추출기 , 내 아이폰의 복사 TrustStore.sqlite3로를 ~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains기존 파일을 덮어 씁니다. 다음 sqlite로 단일 행만 삽입하려고 시도했지만 작동하지 못했습니다.

sqlite3 ~/backup/iOS\ Files/TrustStore.sqlite3
sqlite3>.mode insert
sqlite3>.output working.sql
sqlite3>select * from tsettings;
sqlite3>.quit

이제 working.sqltsettings 테이블의 전체 내용이 있습니다 (제 경우에는 1 행).

sqlite3 ~/Library/Application\ Support/iPhone\ Simulator/6.0/Library/Keychains/TrustStore.sqlite3
sqlite3>INSERT INTO tsettings VALUES(X'...
sqlite3>.quit

다시 말하지만, 위의 sqlite 명령은 저에게는 작동하지 않았지만 다른 사람에게는 좋은 시작점이 될 수 있습니다. TrustStore.sqlite3백업에서 시뮬레이터로 전체 를 복사하는 것은 잘 작동했습니다.


답변

iostrustRuby gem을 살펴보세요 : http://github.com/yageek/iostrust