ios - 확인할 - 아이폰 인증서 신뢰 설정




iOS 7.1에서는 엔터프라이즈 앱 배포가 작동하지 않습니다. (11)

우리는 itms-services:// URL을 사용하여 엔터프라이즈 계정을 통해 앱을 배포합니다. 이것은 항상 잘 작동했지만 iPad에 iOS 7.1 베타를 설치 한 후 설치를 거부합니다. 대신 앱을 다운로드하는 데 문제가있을 때 iOS가보기에는 Cannot connect to example.com 메시지에 Cannot connect to example.com .

나는 SO, Google 또는 7.1 릴리스 노트에서 문제를 일으킬 수있는 것을 제안하기 위해 여기에서 아무 것도 찾을 수 없었습니다.


Apter는 itms-services://?action=download-manifest&url=http://.... itms-services://?action=download-manifest&url=https://.... 로 변경하려고했습니다. 그것은 또한 일할 수 없다. 알림은 cannot connect to my domain . 웹 페이지도 업데이트해야한다는 것을 알았습니다.

문제는 기본 URL이 HTTPS가 아니라 페이지 내의 링크에있는 HTML 코드 중 일부입니다. 개발자는 웹 페이지를 업데이트해야합니다. 또한 준비된 도메인에 유효한 SSL 인증서가 없으므로 Dropbox를 설치하거나 사용해야하며 여기 에 링크가 도움이 될 것입니다.


Dropbox에 대한 이전 답변을 추가하면 PLIST 파일 만 Dropbox에 업로드해야하는 등의 다음 파일 트리를 구현했습니다.

  1. ipa 파일을 http로 서버에 업로드하십시오 (여기서는 변경하지 마십시오).
  2. 프로비저닝 (.mobileprovision) 파일을 http로 서버에 업로드하십시오 (여기서는 변경하지 않음).
  3. plist 파일을 보관 용 계정에 업로드하십시오 (URL은 절대적이므로 plist 파일 내부에서 변경하지 마십시오).
  4. 링크를 클립 보드에 복사하는 "보관함과 링크 공유"옵션을 사용하십시오. 이 링크는 www.dropbox.com 의해 dl.dropboxusercontent.com 부분을 ​​변경 한 후 HTML 파일에 itms-servivces URL의 쿼리로 복사해야합니다. 참고 @ URL은 @Mike가 제안한대로 링크를 인코딩했지만 수행하지 않고 테스트하지는 않습니다. 이제 itms-services URL의 쿼리는 다음과 같아야합니다. itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist

  5. http로 서버에 html 파일을 업로드하십시오. html 파일에는 ipa 및 프로비저닝 파일에 대한 링크가 모두 포함되어 있습니다.

  6. 귀하의 장치에서 귀하의 HTML 파일에 액세스 할 수 있으며 지금은 아이파는 일반적으로 OTA에 의해 설치할 수 있습니다.

이제 베타 테스터에게 OTA가 제공하는 다음 앱 버전을 제공하기 위해 ipa 파일 만 변경해야합니다. 애플이 아직 보안 규정을 바꿀 때까지.

내가 사용하고있는 매우 간단한 HTML 파일 다음에 여기에 합류한다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>iPhone app for test</title>
</head>
<body>
<h1>iPhone app for test</h1>
<br/>
<ul>
    <li><a href="http://www.yourdomain.com/with/directories/provision/v.last/yourprovision_adhoc.mobileprovision">
            Install Provisioning File</a></li>
    <li><a href="itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist">
            Install Application</a></li>
</ul>
</body>
</html>

iPad를 컴퓨터에 연결하고 앱을 설치하는 동안 XCode Organizer를 통해 콘솔을보고 문제를 발견했습니다. 오류는 다음과 같이 나타납니다.

https가 아닌 매니페스트 URL을로드 할 수 없습니다 : http://example.com/manifest.plist

iOS 7.1에서 manifest.plist 파일의 URL은 HTTP를 사용하는 HTTPS 여야합니다. URL을 HTTPS로 변경하면 문제가 해결되었습니다.

itms-services://?action=download-manifest&url=http://example.com/manifest.plist

된다

itms-services://?action=download-manifest&url=https://example.com/manifest.plist

문제의 도메인에 유효한 SSL 인증서가 있어야한다고 가정합니다. 우리는 이미했지만 당신은 그것없이 문제가있을 거라고 상상할 것입니다.


ingconti가 옳다.

  1. app.plist를 dropbox에 업로드하십시오.
  2. https://www.dropbox.com/s/qgknrfngaxazm38/app.plist 와 같은 app.plist의 공유 링크를 가져옵니다.
  3. www.dropbox.comdl.dropboxusercontent.com 으로 바꾸 www.dropbox.com 예 : https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist
  4. '? dl = 0t'와 같은 보관 용 계정 공유 가능 링크의 매개 변수를 삭제하십시오 ( 기업용 앱 배포 시 Carlos Aguirre Tradeco는 iOS 7.1 및 자체 환경 에서 작동하지 않음 ).
  5. <a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist">INSTALL!!</a> 형식으로 링크 된 download.html 파일을 만듭니다 <a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist">INSTALL!!</a>
  6. drop.html을 보관 용 계정에 업로드하십시오.
  7. 다시 한 번 https://www.dropbox.com/s/gnoctp7n9g0l3hx/download.html 과 같은 download.html의 공유 링크를 가져 와서 매개 변수를 제거하십시오.
  8. 두 번째 링크에서도 dl.dropboxusercontent.comwww.dropbox.com 으로 dl.dropboxusercontent.com 예 : https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html

이제 장치에서 https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html 을 방문 https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html . 이전과 같이 앱을 설치할 수 있습니다.

훌륭한 세계 란 무엇인가!


나는 동일한 문제가 있었고 이미 SSL 서버를 사용하고 있었지만 근본적인 문제가 있었기 때문에 https 로의 링크를 변경하는 것이 효과가 없었습니다.

이미지를 보려면 여기를 클릭하십시오.

강조 표시된 비트는 우리 인증서를 신뢰할 수있는 옵션을 제공 해야한다고 말했지만 Safari를 통해 작업하는 앱 스토어이므로 복구 제안은 표시되지 않습니다.

다음과 같은 이유로 기존 솔루션에 만족하지 못했습니다.

  • 일부 옵션은 타사 (Dropbox)에 의존해야합니다.
  • 우리는 SSL 인증서를 지불 할 의사가 없었습니다.
    • 무료 SSL 인증서는 임시 해결책 일뿐입니다.

마지막으로 자체 서명 된 루트 인증 기관을 만들고이를 사용하여 서버의 SSL 인증서를 생성하여 해결책을 찾았습니다.

키 체인 접근 및 OSX 서버를 사용했지만 각 단계마다 다른 유효한 솔루션이 있습니다.

인증 기관 만들기

내가 수집 한 것부터 인증 기관이 인증서가 정품인지 확인하는 데 사용됩니다. 우리는 스스로를 만들려고하기 때문에 정확하지는 않지만 주어진 권위의 모든 인증서를 신뢰할 수 있음을 의미합니다. 이러한 기관의 목록은 일반적으로 브라우저에 기본적으로 포함되어 있으며 실제로는 신뢰할 수 있습니다. (GeoTrust Global CA, Verisign 등)

  • 키 체인을 열고 인증서 작성자를 사용하여 권한 생성

  • 인증 기관 정보를 입력하십시오.

  • 나는 그것이 필요한지 모르지만 권위를 신뢰하게 만들었습니다.

인증서 서명 요청 생성

우리의 경우 인증서 서명 요청은 서버 관리자가 생성합니다. 간단히 말해서 "내 사이트에이 정보가 들어있는 인증서를 갖고 있니?"라고 묻는 파일입니다.

  • 다음으로 인증서 서명 요청 을 만들어야합니다 (이 비트에는 OSX 서버의 인증서 관리자를 사용했습니다.

  • 인증서 정보를 입력하십시오 (ASCII 문자 만 포함해야합니다!, 감사합니다 @ 재퍼 블루스).

  • 어딘가에서 CSR을 저장하십시오.

인증서 만들기

다시 인증 기관으로 활동하면서 CSR을 보낸 사람이 진정한 사람인지 아니면 다른 사람으로 가장하지 않는 사람인지 결정하는 것은 당신에게 달려 있습니다. 실제 당국은이 작업을 수행하는 고유 한 방법을 가지고 있지만, 당신이 당신이라는 것을 확실히 확신 할 수 있기 때문에, 당신의 검증은 아주 확실해야합니다 :)

  • Keychain Access로 돌아가서 그림과 같이 "Create A Certificate .."옵션을 엽니 다.

  • 저장된 CSR을 표시된 상자로 드래그하십시오.

  • "이 요청에 대한 기본값 재정의 가능"버튼을 클릭하십시오.

  • 나는 유효 기간을 늘리고 싶다.

  • 웬일인지, 우리는 약간의 정보를 다시 기입해야한다

  • 이 화면에서 계속을 클릭하십시오.

  • SSL SERVER AUTHENTICATION을 클릭했는지 확인하십시오 . 이로 인해 두통이 생깁니다.

  • 나머지 옵션에서 계속을 클릭 할 수 있습니다.

  • Mail 응용 프로그램이 열리고 인증서를 보낼 수있는 기회가 주어집니다. 이메일로 보내는 대신 마우스 오른쪽 버튼으로 클릭하고 저장하십시오.

인증서 설치

방금 SSL 트래픽 용으로 만든 인증서를 사용하도록 서버를 설정해야합니다.

  • 작업중인 장치 서버 인 경우 인증서가 이미 설치되어있을 수 있습니다.

  • 그래도 아니라면 보류 인증서를 두 번 클릭하고 이메일에서 방금 저장 한 PEM 파일을 표시된 공간으로 드래그하십시오. (저장하지 않았다면 키 체인에서 PEM을 내보낼 수도 있습니다.)

  • 이 새 인증서를 사용하도록 서버를 업데이트하십시오. 새 인증서가 "붙어 있지 않고"되돌릴 수 없다는 것을 알게되면 BOLD ITALIC CAPS 로 돌아갑니다.

장치 설정

앱을 설치해야하는 각 기기에는 해당 인증 기관의 사본이 있어야 해당 인증 기관의 SSL 인증서를 신뢰할 수 있음을 알 수 있습니다.

  • 키 체인 접근으로 돌아가서 인증 기관을 .cer

  • 그런 다음이 파일을 내 OTA 응용 프로그램과 함께 서버에 저장하고 사용자가이 링크를 클릭하여 권한 인증서를 다운로드 할 수 있습니다. 인증서를 사용자에게 직접 전자 메일로 보내는 것도 유효한 옵션입니다.

  • 장치에 인증서를 설치하십시오.

테스트

  • plist 링크 가 https 인지 확인하십시오.

    • 앱을 설치하고 설치하십시오! 이제 작동 할 것입니다. 인증 기관이 신뢰되며 SSL 인증서가 해당 기관에서 제공됩니다.

나는 똑같은 문제가 있었고 위에서 언급 한 것과 마찬가지였다.

  • 드롭 상자에 plist를 넣으십시오.
  • 다운로드 파일 버튼을 마우스 오른쪽 버튼으로 문서의 이미지 아래에 복사 링크 동작을 선택하십시오. 이 링크는 이미 많은 매개 변수가있는 https://dl.dropboxusercontent.com/s/xyz123/app.plist?stuff=stuff 와 같은 것입니다.
  • 매개 변수 제거 (https와 .plist 사이의 주소 만 유지)
  • URL encode online을 찾아 해당 링크 중 하나를 선택하고 복사, 붙여 넣기를 실행 한 다음 결과 텍스트를 복사하여 html에 붙여 넣어 itms-services 링크가 있는지 확인하십시오. 그런데 두 곳의 다른 위치에이 html이 있는데, 그 중 하나가 ipa가있는 곳입니다.
  • plist가 ipa 파일에 대한 절대 참조를 포함하는지 확인하십시오.

두 페이지 모두 iOS 7.1을 사용하여 iphone에 앱을 설치하는 데 성공했습니다.

하지만, 이제 아이폰 7.0x 아이폰은 애플 리케이션을 설치할 수 없습니다.

새로운 질문을 만들었습니다. 7.1 이전의 업그레이드 된 임시 앱 배포가 이루어지지 않았습니다.

두 문제는 모두 긴밀하게 관련되어 있으며 공식적인 언급이 없기 때문에 보완됩니다.


보편적 인 해결책은 장치를 Mac에 연결하고 설치 중에 어떤 일이 일어나는지 관찰하는 것입니다. 오류가 있습니다.

오류 도메인 = NSURLErrorDomain 코드 = -1202 "상점에 연결할 수 없습니다."UserInfo = 0x146635d0 {NSLocalizedDescription = 상점에 연결할 수 없습니다. NSLocalizedRecoverySuggestion = 서버에 연결 하시겠습니까?, NSLocalizedFailureReason = 보안 연결을 설정할 수 없습니다. 날짜 및 시간 설정을 확인하십시오. , NSErrorFailingURLStringKey = https://myserver.com/app/manifest.plist , NSUnderlyingError = 0x14678880 "이 서버에 대한 인증서가 유효하지 않습니다."myserver.com "인 척하는 서버에 연결했을 수 있습니다. 기밀 정보가 위험에 처해 있습니다. ", NSURLErrorFailingURLPeerTrustErrorKey =, NSErrorFailingURLKey = https://myserver.com/app/manifest.plist }

그 오류에서 날짜 설정을 확인하라는 제안조차있었습니다. 어떤 이유로 날짜가 1970 년 1 월 1 일이었습니다. 정확한 날짜를 설정하면 문제가 해결되었습니다.


앞으로 iOS7.1과 함께 https를 통해 모든 OTA 배포를 수행 할 것으로 기대됩니다. 이것을 문서화하지 않으면 애플에 수치스러워한다.

Dropbox를 사용하는 것보다 더 나은 사내 솔루션을 찾고 있거나 인증서를 현금화 할 필요가있는 사용자는 http://blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/ 에서 팁 # 5에 설명 된 단계를 수행하면 해결할 수 있습니다 http://blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/

그것의 요지는 이것입니다 :

  • 완전히 신뢰할 수있는 장치에 설치할 수있는 고유 한 CA Authority 인증서 만들기 (전자 메일로 설치 함)
  • 루트 인증서에 대해 key / cer 쌍을 만들어 서버에 설치하십시오.
  • 웹 서버가 CA Authority 루트 인증서와 일치하는 키 / 셀 쌍을 사용하는지 확인하십시오
  • 이 시점에서 https를 통해 평상시처럼 앱을 설치할 수 있어야합니다.
  • 이 모든 것은 OSX에서 기본적으로 이미 설치된 openssl을 사용하여 수행 할 수 있습니다.

이것은 자체 서명 된 인증서를 작성하는 것과 같지 않습니다.이 솔루션에서는 자신의 개인 인증 기관으로도 활동합니다. Apple 장치에 설치된 루트 인증서가 신뢰할 수있는 (녹색)으로 표시되어 있지 않으면 잘못된 것입니다. 끝내라.

이것은 절대적으로 효과가 있습니다.

업데이트 : 2014 년 3 월 13 일 -이 전체 프로세스를 단순화하는 작은 명령 줄 유틸리티를 제공했습니다. https://github.com/deckarep/EasyCert/releases 에서 다운로드 할 수 있습니다.


엔터프라이즈 배포 용 Dropbox를 사용하는 대신 엔터프라이즈 서명 된 응용 프로그램 배포를 위해 TestFlight를 사용할 수 있습니다.

https://www.testflightapp.com/

Ad-hoc 개발 빌드와 엔터프라이즈 빌드의 호스팅 및 배포를위한 환상적인 서비스입니다.


우리 팀은 https를 사용하는 ad-hoc 배포 용 dropbox를 사용하지만 설치가 실패했습니다. 많은 문제 해결 후에도 제목 필드가 필요하다는 것을 깨달았습니다. 이 필드가없는 링크를 발송할 때마다 사파리는 링크를 무시하고 사용자에게 설치하라는 메시지를 표시하지 않았습니다. 빠른 개발 테스트를 위해 때때로 xml의 제목 노드를 건너 뛰고 그것을 채우지 않았습니다. 이 문제가있는 사람에게 도움이되는 경우 .plist에 다음 노드가 채워져 있는지 확인하십시오.

      ....
     <string>software</string>
    <key>title</key>
     <string>Your App Name</string>
      ...

터미널을 열고 다음 명령을 실행하십시오. curl -i https : // (.ipa 파일 경로는 plist가 아닙니다)

설치 프로그램이 IPA 파일을 볼 수 있는지 여부를 알려줍니다. curl 명령을 '-i'와 함께 실행하면 완전한 응답을 볼 수 있으며 IPA 파일이 아닐 수도 있습니다. 이것은 설치 관리자가 보는 응답이므로 HTTP 200과 IPA가 반환되지 않으면 사용자가 끝까지 반환해야합니다.

ITMS 설치 관리자는 Safari의 컨텍스트를 저장하지 않습니다. Safari의 보안 포털에서 인증 한 경우 인증 쿠키는 설치 프로그램에 전달되지 않습니다. 즉, 설치 프로그램이 인증없이 앱을 볼 수 있어야하고 이것이 '서버에 연결할 수 없습니다'라는 이유가 될 수 있습니다.





deployment