2014-10-07 6 views
2

J2ME midlet을 처음 사용합니다. 나는 노키아에 대한 midlet 응용 프로그램을 만들었습니다. 응용 프로그램 http로 잘 작동합니다. 하지만 http에서 https로 URL을 변경 한 후에는 작동하지 않습니다. 다른 https 사이트 (예 : Google)가 정상적으로 작동합니다. 하지만 서버 링크가 작동하지 않습니다. 다음 예외가 있습니다 java.io.IOException 네이티브 오류 -5. 이것은 내 샘플 코드입니다.J2ME Https 연결이 작동하지 않습니다.

String url = "https://domain"; 
HttpsConnection hc = (HttpsConnection)Connector.open(url); 
SecurityInfo si = hc.getSecurityInfo(); 
Certificate c = si.getServerCertificate(); 
String subject = c.getSubject(); 
+0

인증서 관리 영역의 WTK로 서버 인증서를 가져와야합니다. 인증서를 생성 할 때 CN 영역에 동일한 이름의 IP 주소가 있는지 확인하십시오. –

답변

1

노키아 휴대 전화는 이와 같은 오류 (기본 코드 레이어의 오류)를 기억합니다. 그들에게 의미를 찾는 것은 쉽지 않았다. Symbian 전화 인 경우 Symbian SDK 문서 (Java가없는 경우)에서 Symbian I/O 오류 코드를 확인할 수 있습니다. 내가 아는 한 오류 코드는 J2ME에 음수 기호로보고됩니다. 당신의 경우에는 서버에서 자체 서명 된 SSL 인증서를 사용하고 장치가 장치에 설치된 루트 권한 인증서에 대해 유효성을 검사 할 수 없기 때문에 발생한다고 생각합니다. 이것은 서버에서 적절한 인증서를 사용하는 Google과 같은 다른 HTTPS 사이트에 액세스 할 수있는 이유를 설명합니다.

솔루션은 다음과 같습니다

(1) 구입 및 서버에 Twante 또는 Verysign에서의 SSL 인증서를 설치합니다. 일부 장치는 Twante (적절한 루트 인증서가 없음), 일부 Verysign (거의 사용되지는 않지만 이러한 장치가 거의없는 장치)를 인식하지 못할 수 있습니다. J2ME 장치의 주요 부분은 VerSign보다 더 저렴한 J2ME 용으로 개발 된 Twante 인증서를 받아 들여야합니다.

(2) 일부 인증서를 사용하는 경우 장치에 루트 인증서를 설치할 수 있습니다. 당신이 모든 장치에 인증서를 설치할 수 없기 때문에 그것은, 일반적인 경우에 대한 나쁜 솔루션입니다, 때마다 사용자가 응용 프로그램을 설치

(3) 사용하지 않는 SSL 전혀 :)

(4)를 사용하여 HTTP하지만, 직접 데이터를 암호화하면 BouncyCastle의 포트 인 http://en.wikipedia.org/wiki/Bouncy_Castle_(cryptography)과 같은 일부 J2ME 암호화 라이브러리도 있습니다. 그러나 자바 코드에서 SSL을 처리하는 것은 성능에 심각한 영향을 미친다. 대용량의 데이터 (텍스트 등)는 허용되지 않지만 일반 HTTP (일반 HTTP)를 통해 이미지를 전송할 수 있습니다. SSL