2012-10-22 4 views
1

SMS 게이트웨이에 연결하고 싶습니다. 다음 코드를 발견했습니다.자바에서 자체 서명 된 인증서 사용

public void smsSender(String username, String password, String to, 
     String text) throws IOException { 

    try { 
     String data = "username=" + username + "&password=" + password 
       + "&to=" + to + "&text=" + text; 

     URL url = new URL("https://sendsms.abc.com:1010/sms.php"); 

     HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
     urlc.setRequestMethod("POST"); 
     urlc.setDoOutput(true); 
     urlc.setRequestProperty("Content-type", 
       "application/x-www-form-urlencoded"); 

     BufferedWriter br = new BufferedWriter(new OutputStreamWriter(
       urlc.getOutputStream())); 

     br.write(data); 
     br.flush(); 

     BufferedReader rd = new BufferedReader(new InputStreamReader(
       urlc.getInputStream())); 
     String line; 
     while (null != ((line = rd.readLine()))) { 
      output = line; 
      System.out.println(output); 
     } 

     rd.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

이 메서드를 사용하여 연결하려고하면 Eclipse에서 오류 메시지를 보냅니다.

수없는

요청 대상

난 자체 서명 인증서를 사용하고 액세스에 노력하고있어 서버에 유효한 인증 경로를 찾을 수 있습니다. 나는이 분야에 새로운 사람이다. 어떻게하면이 문제를 해결할 수 있습니다. 미리 감사드립니다 :)

+0

아마도 유용 할 것입니다. http://stackoverflow.com/questions/859111/how-do-i-accept-a-self-signed-certificate-with-a-java-httpsurlconnection –

답변

1

SSL을 통해 원격 메소드를 호출하려면 클라이언트가 서버 인증서를 신뢰해야합니다. 서버에 자체 서명 된 인증서가 있다고 말했기 때문에 연결이 실패한 경우 인증서를 신뢰하도록 클라이언트를 명시 적으로 구성해야합니다. 는 클라이언트와 서버의 자체 서명 인증서 사이의 신뢰 관계를 만들 아래에 언급 된 단계를 수행

  1. 먼저 클라이언트 측에서 서버 인증서를 받아야합니다.
    내가 알고있는 방식은 브라우저의 서버 URL을 누르십시오 ( ). 서버의 인증서를 가져 와서 브라우저에서 가져옵니다. 서버 인증서를 얻는 다른 방법이있을 수도 있지만 찾아야합니다.

  2. 공개 키를 브라우저에서 클라이언트로 인증서로 내 보냅니다. 그것을 server.cer로합시다.

  3. 지금은, 클라이언트 키 스토어를 생성

    키 도구 -genkey -alias clientkeys -keyalg RSA -keystore client.keystore -storepass 123456 -keypass 123456 -dname "CN = localhost를, OU = MYOU, O = MYORG, L은 = '마이는 S = MYSTATE는 C 내 "

  4. 클라이언트 인증서를 생성 =

    키 도구 -export -alias clientkeys -keystore client.keystore -storepass 123456 - 파일 client.cer

    이제
  5. , 클라이언트 신뢰 저장소에 서버 인증서를 가져옵니다.

    키 도구 -import -alias serverCert 베르너가 제공 link에서 에릭슨의 의견에 언급 한 바와 같이 -keystore client.truststore -storepass clientcert -file server.cer

  6. 이제 클라이언트 키 스토어를로드 .

일이 아직 명확하지 않은 경우 알려주십시오. 그러나 나는 당신이 클라이언트와 서버 사이의 SSL 핸드 쉐이킹과 관련된 구글의 문서를 읽을 것을 제안한다.

+0

제가 여기 새로 왔으므로 그 단계에 대한 링크를 제공 할 수 있습니다. :) – Chamath

+0

내 대답이 업데이트되었습니다. 봐. – Arham

+0

여전히 같은 문제가 있습니다. ** 요청한 대상에 유효한 인증 경로를 찾을 수 없습니다 ** – Chamath

관련 문제