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


87

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

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

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

최신 정보

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

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


1
나는 최근에 개발 용 Mac의 로그인 키 체인으로 가져온 CA 인증서에서 신뢰하는 호스트를 사용하여이 문제를 해결했습니다. (즉, 내 로컬 Safari는 사이트를 신뢰하지만 시뮬레이터는 신뢰하지 않습니다.) 시뮬레이터에서 작동하지 않아 놀랐습니다. 시뮬레이터에서 신뢰할 수있는 인증서를 조작하기 위해 iPhone 프로비저닝 도구를 어떻게 사용합니까?
mpontillo

답변:


113

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

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

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


3
드래그 앤 드롭은 iOS 7 시뮬레이터에서 잘 작동합니다. iOS 6.0 / 6.1 시뮬레이터에서 작동하지 않는지 확인할 수 있습니다.
John Bowers 2014 년

2
나이거나 Xcode 6으로 업그레이드했기 때문에이 드래그 앤 드롭은 이제 iOS 8 버전의 시뮬레이터에서만 작동합니다. iPhone 5s iOS 7 및 iOS 7.1 시뮬레이터를 사용해 보았지만 인증서를 시뮬레이터 창으로 드래그해도 아무 일도 일어나지 않습니다. 그리고 지금
Fred

2
iOS 7 및 7.1에 대한 해결 방법을 찾았습니다. 연결 가능한 웹 서버에 .cer 파일을 넣고 (필요한 경우 application / x-x509-ca-cert mime 유형 추가) 시뮬레이터에서 Safari를 사용하여 인증서를 다운로드합니다. 웹 서버에서. 그런 다음 드래그 앤 드롭 한 것처럼 설치하라는 메시지가 표시됩니다.
Fred

3
당신은 신이다 나의 친구
CommaToast

1
당신은 남자입니다! 나는 이것을하는 빠른 방법이 있어야한다는 것을 알고 있었다.
pqsk

44

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

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

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

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


13
"루트 인증서에 대한 완전 신뢰 활성화"옵션은 내 시뮬레이터 실행 iOS에서 무엇이든지이 10.3 아니다
예수님로드 리 게스

1
이 문제를 해결 했습니까? 루트 인증서가 아래에 나열되지 Certificate Trust Settings않습니까? 이 한 - 내 프로필 추가하고 인증서가 포함되어 단지 적은 한 달 전에 비해 작업. 내 시뮬레이터 캐시를 재설정하면 이제 인증서가 추가되지만 완전히 신뢰할 수있는 옵션이 없습니다.
chrisp

3
필자의 경우 "루트 인증서에 대한 완전 신뢰 활성화"옵션은 루트 인증서에만 나타납니다. 중간 또는 리프 인증서에는 나타나지 않습니다.
John Girata

1
또한 인증서에는 basicConstraints = CA:TRUEopenssl을 사용하여 인증서를 생성 할 때 CA 기본 제약 조건 옵션이 true로 설정되어 있어야합니다 . 그렇지 않으면 신뢰할 수있는 것으로 나타나지 않습니다.
sandinmyjoints

3
12.2 (아마도 이전 버전 일 수도 있음)에서 절차는 이제 일반> 프로필로 이동하여 인증서를 선택하고 오른쪽 상단의 설치를
누르는 것 같습니다

23

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

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는 괜찮지 만 내 응용 프로그램은 아닙니다.


3
팁 : 시뮬레이터를 다시 시작하여 새 인증서를 설치하십시오.
Kiko Seijo

1
이것은 Xcode 10.1 및 iPhone 5s 12.1 시뮬레이터로 나를 위해 트릭을 수행했습니다. 올바른 시뮬레이터에 인증서를 설치하도록 스크립트에 지시하기 만하면됩니다. 이것을 badssl.test와 함께 사용하는 경우 (즉, 도커에서 로컬로 실행되는 badssl), 실제 인증서를 제외한 모든 것을 제거하려면 .pem을 해킹해야합니다.
앤드류 Ebling

이것은 내 생명을 구했습니다. iOS에 자체 서명 된 인증서를 설치하기위한 커뮤니티 지원은 거의 없습니다. 감사합니다!
lsimonetti apr

iOS 12.4가 설치된 iPhone X 용 Simulator 10.3에서 작동하는지 확인합니다.
Sergei Basharov 19.09.09

9

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

또한보십시오:

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


@nailer 답변은 TrustStore.sqlite3에서 해당 blob의 형식이 불투명하고 잠재적으로 변경 될 수 있다는 것을 알고있는 한 더 많은 참조로 업데이트되었으므로 다른 사람들이 취한 접근 방식은 Safari를 통해 장치에 인증서를 설치하는 것 같습니다. 결과 TrustStore 행을 시뮬레이터에 복사합니다.
Jonah


2

사용하여 아이폰의 백업 추출기 , 내 아이폰의 복사 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백업에서 시뮬레이터로 전체 를 복사하는 것은 잘 작동했습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.