엔터프라이즈 앱 배포가 iOS 7.1에서 작동하지 않음
계정을 하고 있습니다.itms-services://URL. 이것은 항상 잘 작동했지만, 우리의 아이패드에 iOS 7.1 베타를 설치한 후에는 설치를 거부합니다.대신에 우리는 그냥 일반적인 것을 얻습니다.Cannot connect to example.com앱을 다운로드하는 데 문제가 있을 때 iOS가 도움이 되지 않게 표시하는 메시지입니다.
SO, Google 또는 7.1 릴리스 노트에서 문제의 원인이 될 수 있는 내용을 찾을 수 없었습니다.
앱을 설치하는 동안 아이패드를 컴퓨터에 연결하고 XCode Organizer를 통해 콘솔을 보면서 문제를 발견했습니다.오류는 다음과 같습니다.
호스트가 아닌 매니페스트 URL을 로드할 수 없습니다. http://example.com/manifest.plist
의 경우 iOS 7.을 확인할 수 있습니다.manifest.plistHTTP를 사용하던 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 인증서가 있어야 합니다.우리는 이미 했지만, 나는 그것이 없으면 당신이 문제가 있을 것이라고 생각합니다.
잉콘티의 말이 맞습니다.
- app.plist를 드롭박스에 업로드합니다.
- https://www.dropbox.com/s/qgknrfngaxazm38/app.plist 과 같은 app.plist의 공유 링크를 가져옵니다.
- 체교다를
www.dropbox.com와 함께dl.dropboxusercontent.com링크에서, 예를 들어, https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist . - "?dl=0t"와 같은 드롭박스 공유 가능 링크의 매개 변수를 제거합니다(엔터프라이즈 앱 배포 시 Carlos Aguirre Tradeco에 따르면 iOS 7.1 및 내 경험으로는 작동하지 않습니다).
- 성을 합니다.
download.html이 " 링은파일같다음과형식이"인<a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist">INSTALL!!</a> - 를 합니다.
download.html를 - 다시 https://www.dropbox.com/s/gnoctp7n9g0l3hx/download.html, 과 같은 download.download의 공유 링크를 가져와 매개 변수를 제거합니다.
- 를 바꿉니다.
www.dropbox.com와 함께dl.dropboxusercontent.comhttps://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html 처럼 두 번째 링크에도 있습니다.
자, 방문해주세요.https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html당신의 장치에, 당신은 이전처럼 앱을 설치할 수 있습니다.
정말 멋진 세상 »
Mark Parnell의 답변에 더 나아가, 이것을 피하는 빠르고 더러운 방법은 매니페스트 플리스트를 Dropbox에 넣은 다음 Dropbox 웹 인터페이스를 사용하여 직접 https 링크('공유 링크' -> '링크 가져오기' -> '다운로드')를 얻는 것입니다.
실제 ipa는 당신이 항상 제공하는 곳 어디에서나 남아있을 수 있습니다.항목 서비스 URL의 쿼리에 삽입하기 전에 목록의 URL을 URL 인코딩해야 합니다(단, &s를 %3D로 대체하는 것만으로도 작동할 수 있음).
한 가지 단점은 설치 대화상자가 "dl.dropbox.com 에서 [dll]을 설치하기를 원한다는 것입니다.
iOS 7.1 이후에는 https를 통해 모든 OTA 배포를 수행해야 합니다. Apple이 이를 문서화하지 않은 것은 부끄러운 일입니다.
Dropbox에 의존하거나 인증서를 위해 현금을 지불해야 하는 것보다 더 나은 사내 솔루션을 찾고 있는 사용자는 팁 #5에 설명된 단계를 따르면 솔루션을 얻을 수 있습니다. http://blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/
요점은 다음과 같습니다.
- 신뢰할 수 있는 장치에 설치할 수 있는 고유한 CA Authority 인증서 생성(전자 메일로 설치)
- 루트 인증서에 대한 키/서커 쌍을 만들어 서버에 설치합니다.
- 웹 서버가 CA Authority 루트 인증서와 일치하는 키/cer 쌍을 사용하는지 확인합니다.
- 이 시점에서 https를 통해 평소처럼 앱을 설치할 수 있어야 합니다.
- 이 모든 작업은 OSX에서 이미 설치된 openssl을 사용하여 수행할 수 있습니다.
이는 자체 서명된 인증서를 수행하는 것과 동일하지 않습니다. 이 솔루션에서는 사용자가 개인 인증 기관의 역할도 수행합니다.Apple 장치에 설치된 루트 인증서가 신뢰됨(녹색)으로 표시되지 않으면 문제가 발생한 것입니다.다시 해보세요.
이것은 확실히 효과가 있습니다.
업데이트: 2014년 3월 13일 - 이 전체 프로세스를 단순화하는 작은 명령줄 유틸리티를 제공했습니다.https://github.com/deckarep/EasyCert/releases 에서 구입할 수 있습니다.
저도 같은 문제가 있었고 이미 SSL 서버를 사용하고 있었지만 근본적인 문제가 있어서 https에 대한 링크를 변경하는 것만으로는 작동하지 않았습니다.
강조 표시된 비트는 인증서를 신뢰할 수 있는 옵션이 제공되어야 한다고 알려주었지만, 여기가 앱 스토어이기 때문에 Safari를 통해 복구 제안이 제시되지 않았습니다.
다음과 같은 이유로 기존 솔루션에 만족하지 못했습니다.
- 일부 옵션은 타사에 의존해야 합니다(Dropbox).
- SSL 인증서에 대한 비용을 지불하지 않았습니다.
- 사용 가능한 SSL 인증서는 임시 솔루션에 불과합니다.
저는 마침내 자체 서명된 루트 인증 기관을 만들고 이를 사용하여 서버의 SSL 인증서를 생성하여 해결책을 찾았습니다.
Keychain Access 및 OSX Server를 사용했지만 각 단계에 대한 다른 유효한 솔루션이 있습니다.
인증 기관 생성
제가 수집한 바로는, 인증 기관은 인증서가 진짜인지 확인하는 데 사용됩니다.우리가 직접 생성하려고 하기 때문에 보안이 정확하지는 않지만 지정된 권한의 모든 인증서를 신뢰할 수 있음을 의미입니다.이러한 권한 목록은 실제로 신뢰할 수 있으므로 일반적으로 브라우저에 기본적으로 포함됩니다.(GeoTrust Global CA, Verisign 등)
- Keychain을 열고 인증서 길잡이를 사용하여 권한 생성
- 인증 기관 정보 입력

- 꼭 필요한 것인지는 모르겠지만, 저는 당국을 신뢰하게 만들었습니다.

인증서 서명 요청 생성
이 경우, 인증서 서명 요청은 서버 관리자에 의해 생성됩니다.단순히 "내 사이트에 대한 이 정보가 있는 인증서를 받을 수 있을까요?"라고 묻는 파일입니다.
- 다음으로 인증서 서명 요청을 만들어야 합니다(이 비트에 대해 OSX 서버의 인증서 관리자를 사용했습니다).
- 인증서 정보를 입력합니다(ASCII 문자만 포함해야 합니다!, 감사합니다 @Jasper Blues).

- 생성 CSR을 어딘가에 저장합니다.

인증서 만들기
다시 인증기관 역할을 하면서 CSR을 보낸 사람이 진짜인지, 다른 사람인 척하는 것이 아닌지는 본인이 판단할 일입니다.실제 당국은 이를 수행하는 방법을 자체적으로 가지고 있지만, 당신이 당신이라는 것을 꽤 확신하기를 바라기 때문에, 당신의 검증은 꽤 확실해야 합니다 :)
- Keychain Access로 돌아가서 "인증서 만들기"를 엽니다.표시된 옵션
- 저장된 CSR을 표시된 상자로 끕니다.

- "이 요청에 대한 기본값을 재정의합니다" 단추를 누릅니다.

- 저는 유효 기간을 늘리고 싶습니다.

- 어떤 이유로, 우리는 정보를 다시 작성해야 합니다.

- 이 화면에서 계속 클릭

- SSL 서버 인증을 클릭해야 합니다. 이것 때문에 골치가 아팠습니다.

나머지 옵션을 통해 계속을 클릭할 수 있습니다.
인증서를 보낼 수 있는 기회를 제공하는 메일 앱이 열립니다.전자 메일을 보내는 대신 마우스 오른쪽 단추로 클릭하여 저장합니다.

인증서 설치
이제 SSL 트래픽에 대해 방금 만든 인증서를 사용하도록 서버를 설정해야 합니다.
- 작업 중인 장치가 서버인 경우 인증서가 이미 설치되어 있을 수 있습니다.

- 그렇지 않은 경우 보류 중인 인증서를 두 번 클릭하고 방금 전자 메일에서 저장한 PEM 파일을 표시된 공간으로 끕니다.(또는 저장하지 않은 경우 키체인에서 PEM을 내보낼 수 있습니다.)

- 이 새 인증서를 사용하도록 서버를 업데이트합니다.새 인증서가 "붙지 않고" 계속 복구되는 경우 볼드 이탈릭 캡스의 비트로 돌아갑니다.

장치 설정
앱을 설치해야 하는 각 장치에는 이 인증 기관의 SSL 인증서를 신뢰할 수 있음을 알 수 있도록 해당 인증 기관의 복사본이 있어야 합니다.
- 키체인 액세스로 돌아가서 인증 기관을 .cer로 내보냅니다.

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

- 장치에 인증서를 설치합니다.

시험
목록 링크가 https인지 확인합니다.
- 앱을 설치해 보십시오!이제 작동해야 합니다.인증 기관은 신뢰할 수 있으며 SSL 인증서는 해당 기관에서 가져온 것입니다.
작동하는 것은 확인할 수 있지만 드롭박스에 html과 plist를 넣어야 합니다.비기업 OTA(즉, 기업용 OTA)에서도 작동합니다.당신은 당신의 개발팀과 앱을 공유하기를 원합니다.
제가 했습니다.
내 사이트에서 나는 다음 링크로 페이지를 만들었습니다:
href="https://dl.dropboxusercontent.com/u/ /(DB ID)/ipa.html">MyApp
DropBox에 다른 HTML 페이지를 썼습니다.
https://dl.dropboxusercontent.com/u/(your DBid)/MyApp.plist"> 탭하여 MyApp 설치
DropBox에서 plist를 이동했지만 이전 서버에 POINT로 남겼습니다(https 없음).
터미널을 열고 curl -i https://(.ipa 파일 경로 not plist) 명령을 실행합니다.
설치 관리자가 IPA 파일을 볼 수 있는지 여부를 알려줍니다.'-i'를 사용하여 curl 명령을 실행하면 전체 응답이 표시되며 IPA 파일이 아닐 수 있습니다.이것은 설치 프로그램에서 확인하는 응답이므로 HTTP 200 및 IPA를 반환하지 않는 경우 사용자가 직접 반환해야 합니다.
ITMS 설치 관리자는 Safari의 컨텍스트를 저장하지 않습니다.Safari에서 보안 포털로 인증한 경우 인증 쿠키가 설치 관리자에게 전달되지 않습니다.설치 관리자가 인증 없이 앱을 볼 수 있어야 하므로 '서버에 연결할 수 없음' 메시지가 표시될 수 있습니다.
저는 위에서 언급한 것과 같은 문제를 겪었습니다.
- 플리스를 드롭박스에 넣습니다.
- 파일 다운로드 단추 위에 마우스 오른쪽 단추가 있는 문서 이미지 아래에서 링크 복사 작업을 선택합니다.이 링크는 이미 많은 매개 변수가 있는 https://dl.dropboxusercontent.com/s/xyz123/app.plist?stuff=stuff 와 같습니다.
- 매개 변수 제거(https와 .plist 사이의 주소만 유지)
- url 인코딩을 온라인으로 검색하여 해당 링크 중 하나를 선택하고 복사, 붙여넣기, 실행한 다음 결과 텍스트를 복사하여 HTML에 붙여넣습니다. 여기서 itms-services 링크가 있습니다.참고로 제가 html을 가지고 있는 곳은 두 곳인데, 그 중 하나가 ipa가 위치한 곳입니다.
- 목록에 ipa 파일에 대한 절대 참조가 포함되어 있는지 확인합니다.
두 페이지 모두 ios 7.1이 탑재된 아이폰에 앱을 설치하는 데 성공했습니다.
하지만 이제 ios 7.0x를 탑재한 아이폰은 앱을 설치할 수 없습니다.
새로운 질문을 만들었습니다. 7.1 이전의 iOS에서 업그레이드된 애드혹 앱 배포가 작동하지 않습니다.
두 문제 모두 밀접하게 관련되어 있으며, 공식적인 언급이 부족하기 때문에 결합되어 있습니다.
어떤 멋진 남자가 클래스 1 시작을 사용하여 문제를 해결했습니다.인증서 지원(모든 인증서와 함께 작동) 및 기존 *.plist 파일의 링크를 자동으로 변경하는 코드를 추가하는 SSL 인증서 및 공유 Apache 구성.복사하기에는 너무 깁니다. 링크는 http://cases.azoft.com/how-to-fix-certificate-is-not-valid-error-on-ios-7/ 입니다.
혹시 AWS S3가 매력적으로 작동한다면,음. 상대적으로 말하면 :-)
AWS에서 애드혹용 버킷을 만들고 인덱스 파일(빈 인덱스.html 파일일 수 있음)을 추가한 다음 CyberDuck 또는 Coda와 같은 S3에 연결할 수 있는 클라이언트(연결 창을 얻기 위해 사이트 추가를 선택한 Coda를 사용함)를 사용하여 다음과 같은 연결을 설정합니다.

그런 다음 XCode에서 엔터프라이즈 애드혹을 구축하고 https://s3.amazonaws.com/your-bucket-name/your-ad-hoc-folder/your-app.ipa 을 애플리케이션 URL로 사용하여 새 S3 버킷 디렉터리에 업로드하십시오.
항목 링크는 일치해야 합니다. 예: itms-services://?action=sys-sys&url=https://s3.amazonaws.com/your-bucket-name/your-ad-hoc-folder/your-app.plist
그리고 voila.
일반 AWS URL에만 해당됩니다. AWS에서 사용자 지정 URL을 사용해 본 적이 없으므로 몇 가지 방법을 다르게 수행해야 할 수 있습니다.
저는 제임스 웹스터의 솔루션을 작업 이상으로 만들기로 결심했지만, Plesk와 함께 작동할 수 없었습니다.
엔터프라이즈 배포에 Dropbox를 사용하는 대신 TestFlight를 사용하여 엔터프라이즈 서명 앱 배포에 사용할 수 있습니다.
https://www.testflightapp.com/
이것은 애드혹 개발 빌드와 엔터프라이즈 빌드를 호스팅하고 배포하기 위한 환상적인 서비스입니다.
또한 Dropbox에 대한 이전 답변에서 PLIST 파일만 Dropbox에 업로드해야 한다는 등의 파일 트리를 구현했습니다.
- ipa 파일을 http로 서버에 업로드합니다(여기서는 변경 사항 없음).
- 프로비저닝(.mobile provision) 파일을 http로 서버에 업로드합니다(여기서는 변경 사항 없음).
- 목록 파일을 드롭박스에 업로드합니다(URL이 절대이므로 목록 파일 내에서 변경할 수 없음).
링크를 클립보드에 복사하는 "Dropbox와 링크 공유" 선택사항을 사용합니다.후URL 에 .
www.dropbox.com타고dl.dropboxusercontent.com참고 나는 @Mike가 제안한 대로 링크를 URL로 인코딩했지만 테스트하지 않고는 테스트하지 않습니다.의 쿼리는과 같습니다. " itms-services URL"은 다음과 같습니다.itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plisthtml 파일을 http로 서버에 업로드합니다.html 파일에는 ipa 및 프로비저닝 파일에 대한 링크가 모두 포함되어 있습니다.
- 당신의 장치에서 당신의 html 파일에 접근하고, 이제 ipa는 보통처럼 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>
우리 팀은 https를 사용하는 애드혹 배포를 위해 드롭박스를 사용하지만 여전히 앱을 설치하지 못했습니다.많은 문제를 해결한 후에 우리는 제목 필드도 필요하다는 것을 깨달았습니다.이 필드가 없는 링크를 보낼 때마다 Safari는 링크를 무시하고 사용자에게 설치를 요청하지 않았습니다.때때로 빠른 개발 테스트를 위해 xml의 제목 노드를 건너뛰고 채우지 않았습니다.이 문제가 있는 사용자에게 도움이 되는 경우 .plist에 다음 노드가 채워졌는지 확인합니다.
....
<string>software</string>
<key>title</key>
<string>Your App Name</string>
...
이 게시물을 읽고도 여전히 앱을 다운로드하는 데 문제가 있었습니다.자체 서명된 SSL 인증서 때문에 문제가 발생했습니다.
저는 이 문제에 대한 해결책을 찾았습니다.확장자가 '.crt'인 인증서 파일을 웹에 업로드하고 모바일 사파리에 주소를 입력해야 합니다.신뢰할 수 있는 인증서 목록에 인증서를 추가하는 방법을 묻습니다.이 작업 후에는 애드혹 앱을 설치할 수 있습니다.
범용 솔루션은 장치를 Mac에 연결하고 설치 중에 발생하는 상황을 관찰하는 것입니다.오류가 발생했습니다.
기본 오류와 함께 다운로드 매니페스트를 로드할 수 없습니다. 오류 도메인=NSURLErrorDomain Code=-1202 "스토어에 연결할 수 없음" UserInfo=0x146635d0 {NSLocalizedDescription=스토어에 연결할 수 없음, NSLocalizedRecoverySuggestion=그래도 서버에 연결하시겠습니까? NSLocalizedFailureReason=보안 연결을 설정할 수 없습니다.날짜 및 시간 설정을 확인하십시오. NS 오류 실패URLstringKey=https://myserver.com/app/manifest.plist, NSunderlingError=0x14678880 "이 서버의 인증서가 잘못되었습니다."myserver.com "으로 가장하여 기밀 정보를 위험에 빠뜨릴 수 있는 서버에 연결하고 있을 수 있습니다." NSURL 오류 실패URLPeerTrustErrorKey=, NS 오류 실패URLKey=https://myserver.com/app/manifest.plist }
심지어 그 오류에는 날짜 설정을 확인하라는 제안이 있었습니다.어떤 이유에서인지 그 날짜는 1970년 1월 1일이었습니다.정확한 날짜를 설정하면 문제가 해결되었습니다.
Peter는 변화를 시도했습니다.itms-services://?action=download-manifest&url=http://....로.itms-services://?action=download-manifest&url=https://....또한 작동할 수 없습니다.경고는cannot connect to my domain저는 그것도 웹페이지를 업데이트해야 한다는 것을 알게 되었습니다.
문제는 메인 URL이 HTTPS가 아니라 페이지 내 링크에 있는 HTML 코드의 일부입니다.웹 페이지를 업데이트하려면 개발자가 필요합니다.또한 스테이징 도메인에 유효한 SSL 인증서가 없으므로 설치하거나 드롭박스를 사용해야 합니다. 여기 링크가 도움이 될 수 있습니다.
언급URL : https://stackoverflow.com/questions/20276907/enterprise-app-deployment-doesnt-work-on-ios-7-1
'programing' 카테고리의 다른 글
| 약속을 관찰 가능으로 변환 (0) | 2023.05.17 |
|---|---|
| bash 기록 완료를 변경하여 이미 연결된 작업을 완료하려면 어떻게 해야 합니까? (0) | 2023.05.17 |
| Linkq를 사용하여 목록에서 일치하는 모든 값의 인덱스 가져오기 (0) | 2023.05.17 |
| CSS에서 img 태그의 src 속성에 해당하는 것을 설정할 수 있습니까? (0) | 2023.05.17 |
| 엔티티에 대한 링크 - SQL "IN" 절 (0) | 2023.05.17 |