2013-11-04 5 views
2

iOS 및 Android에서 Worklight Server로 SSL을 사용해야하는 Worklight 버전 6.0의 데모에서 작업하고 있습니다.Worklight 개발에 서명 된 SSL 인증서가 필요합니까?

Worklight 서버에서 자체 서명 또는 테스트 인증서를 사용할 수있는 방법이 있습니까? 아니면 테스트/데모를 위해 표준 CA 중 하나에서 인증서를 구매해야합니까?

안드로이드 시스템 트러스트 스토어에서 내 인증서를 가져 오는 방법에 대한 참조를 보았는데 유망 해 보였지만 iOS와 비슷한 것은 없습니다. 어떤 솔루션이 작동하는지 여부에 대한 많은 논의와 함께 (그리고 내가 찾을 수있는 iOS 7에서 여전히 작동하는 것에 대한 논의가 아니라는) 많은 네이티브 코드 해결 방법 (SSL 인증서 확인 기능을 완전히 없애는 것)이 있습니다.

인증서를 Android 시스템으로 가져 오는 것이 개발을위한 최선의 방법을 신뢰하고 있습니까?

인증서 검사를 완전히 사용하지 않는 자체 서명 또는 테스트 인증서를 허용하는 iOS 용 간단한 솔루션이 있습니까?

답변

4

확인. 일반적인 목적의 답변이나 특정 인증서를 수락하는 방법을 찾지 못했지만 iOS 및 Android에서는 개발 및 테스트를 위해 클라이언트 측 인증서 유효성 검사를 비활성화 할 수 있습니다.

Android의 기본 매니페스트는 이며 이미이며 인증서 유효성 검사를 무시합니다. 기본적으로 AndroidManifest.xml에의 응용 프로그램 요소는 속성이 있습니다

android:debuggable="true" 

이 설정을, 클라이언트는 서버가 제시 한 SSL 인증서를 확인하지 않습니다. 따라서 Android에서는 자체 서명 된 인증서가 기본적으로 작동합니다. 명심해야 할 중요한 점은 개발에서 프로덕션으로 이동할 때이 속성을 false로 설정하는 것이 중요하다는 것입니다. 속성을 false로 설정하면 클라이언트가 서버에서 제공 한 인증서의 유효성을 검사하므로 프로덕션 서버에 실제 서명 된 인증서가 필요합니다. (의미가 있음)

iOS에는 몇 가지 제안 된 솔루션이 있습니다. 사용중인 앱은 내 < 앱 이름 끝에 다음을 추가하는 것입니다.m 파일 : 나는 수집 무엇부터

@implementation NSURLRequest(DataController) 
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host 
{ 
    return YES; 
} 
@end 

이는 게시되지 않은 API이며, 그것은 나쁜 형태 무시하지만 작동하고,이 개발 , 그래서 그것으로거야.

맹목적으로 YES를 반환하기 전에 내가 똑똑하고 Worklight Server의 호스트 이름을 확인한다고 가정하지만, 위의 코드를 추가하면 내 앱이 자체 서명 된 인증서와 함께 SSL을 사용할 수 있습니다. 워크 라이트 서버.

앱을 제작하기 전에 이러한 "해결 방법"을 모두 제거해야합니다. 앱을 중간자 공격 (man-in-the-middle attack)에 취약하게 만듭니다. 그러나 개발/초기 테스트/데모에서는 실제 서명 인증서를받지 않아도 SSL을 허용합니다.

+0

과거에 iOS 용 API에 대해 알고 있었으면 좋겠다. 좋은 점이있다. – jnortey

0

예, 다음을 수행하여이를 달성 할 수

  1. 가 인증 기관 역할을하는 자체 서명 된 인증서를 생성합니다.
  2. iOS 장치에이 인증서를 설치하십시오 (서버에서 인증서를 호스팅하고 사파리의 링크를 방문한 다음 다운로드하는 것이 가장 쉬운 방법입니다). 이제 iOS 장치는이 인증 기관에서 서명 한 인증서가있는 서버를 신뢰합니다.
  3. 1 단계에서 생성 한 인증 기관에서 서명 한 새 인증서를 만듭니다.
  4. 워크 라이트 서버
+0

나는이 "사파리를 통해 인증서를 추가 한 다음이 하이브리드 앱 작동 읽기 "여러 장소에서 테스트했지만 작동하지 않습니다. 인증서는 모바일 사파리 브라우저에서 허용되며 여전히 하이브리드 앱에서 거부됩니다. –

+0

그게 이상해 ... 나는이 일을 전에 얻었 어. 나는 내가 일해야하는 것이 무엇인지를 확인하기 위해 두 번 체크 할 것이다. – jnortey

0

현재 Worklight 앱은 자체 서명 된 인증서로 작동하지 않습니다. 프로덕션 환경에서 사용하도록되어 있으므로 유효한 CA 인증서 만 수락합니다.

+0

특정 자체 서명 인증서를 명시 적으로 수락 할 방법을 찾지 못했지만 클라이언트에서 인증서 검사를 사용하지 못하게하는 방법을 찾았습니다. 이것은 개발/테스트에만 적합합니다. 이는 앱을 중간자 공격에 취약하게 만듭니다. –

4

알려진 CA에서 서명하지 않은 인증서를 개발 및 테스트 목적으로 사용하는 아주 쉬운 방법이 있습니다.

이 지원은 Worklight에서 제공되지 않습니다. 이러한 유형의 인증서에 대한 신뢰를 설정하거나 허용하지 않는 것은 각 모바일 플랫폼에 달려 있습니다. 위의 David의 권장 사항은 SSL 유효성 검사를 사용하지 않도록 설정하는 몇 가지 경우에 유효한 대체 방법 일 수 있습니다. 그러나 android : debuggable 플래그는 directUpdate가 사용되는 것과 같은 특정 시나리오를 다루지 않는 경우에만 표시됩니다. 또한 모든 형태의 SSL 유효성 검사를 비활성화하는 것은 개발자/테스트 환경에서도 실제로 원하는 내용이 아닐 수 있습니다. 여기

은 당신이 할 수있는 것입니다 :

  1. 먼저 그 순수 자체 서명 인증서 자체가 당신이 인증서의이 유형에 설치하는 것을 허용하지 않습니다 단지 플랫폼 때문에, iOS 및 안드로이드에서 작동하지 않습니다 이해하고 자신의 트러스트 스토어.
  2. 자체 서명 된 CA 인증서를 대신 사용하십시오. 이들은 쉽게 만들 수 있습니다. CA 비트가 TRUE로 설정된 경우를 제외하고는 자체 서명 된 인증서와 동일합니다.
  3. 일부 도구에서 생성 한 자체 서명 된 인증서는 대개 CA 인 인증서를 작성하지 않으므로주의하십시오. 자체 서명 인증서가 CA인지 확인하십시오.

      서명 CA의 인증서 자체를 만드는 방법에 대한
    • 은 OpenSSL 예 :

    • certificate.crt 2048 -keyout privateKey.key -out :

    하려면 openssl REQ -x509 -nodes -days 365 -newkey RSA를

  4. certificate.crt 파일을 확인은 X.509 버전 3, 다음과 같은 정의 확장이 있습니다있는 basicConstraints = CA :

    :
  5. 는 다음과 같은 명령을 실행하여 certificate.crt 파일을 확인할 수 있습니다 TRUE를

    openssl x509 -in certificate.crt -text -noout

  6. 이 인증서를 서버 인증서로 사용하십시오.
  7. iOS에서 인증서.crt 파일을 전자 메일로 보내거나 수동으로 클릭하여 설치할 수있는 웹 브라우저에서 파일을 호스팅하십시오. (호스팅 WL 서버에서 직접 설치하지 마십시오. 브라우저가 아닌 브라우저 공간으로 가져 오기 만하면됩니다.이 -> 설정 -> 일반 -> 윤곽을 아래에 보면 설치되는 것을)
    • 확인 구성 프로파일
    • 아이폰 OS가 마크는 안드로이드에 당신이 설치할 수 있습니다
  8. '신뢰'로이다 인식 확인 Android CA 스토어의 certificate.crt. certificate.crt는/sdcard에 넣을 수 있으며 설정> 보안> SD 카드에서 인증서 설치에서 설치할 수 있습니다. 인증서는 전자 메일 첨부 파일로 보내거나 위의 7 단계 에서처럼 브라우저를 통해 다운로드하여 열 수도 있습니다. Android에서 인증서의 별칭을 요청하고 이름을 선택합니다. > 보안 - -이 설정에서 보면 설치되는 것을
    • 확인> 신뢰할 수있는 자격 증명 -> 사용자
관련 문제