Как реализовать службы RESTful через SSL?

Когда я запускаю свой клиент RESTful в Eclipse, получаю следующую ошибку:

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(Unknown Source)
    at sun.net.NetworkClient.doConnect(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source)
    at com.elkay.client.RestClient.main(RestClient.java:23)

При вызове в браузере URL-адрес не блокируется. Как использовать через клиент?

ТИА!

РЕДАКТИРОВАТЬ: (код клиента)

public class RestClient {

    public static void main(String[] args) {

          try {

            URL url = new URL("https://www.xyz.com");


            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            DataOutputStream printout = new DataOutputStream(conn.getOutputStream());  
            String authString=URLEncoder.encode("username=anushree&password=anushree","UTF-8");  
            printout.writeBytes (authString);  
            printout.flush ();   
            printout.close ();  

            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");

            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : "
                        + conn.getResponseCode());
            }

            BufferedReader br = new BufferedReader(new InputStreamReader(
                (conn.getInputStream())));

            String output;
            System.out.println("Output from Server .... \n");
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }

            conn.disconnect();

          } catch (MalformedURLException e) {

            e.printStackTrace();

          } catch (IOException e) {

            e.printStackTrace();

          }

        }


}

person Anushree Acharjee    schedule 22.01.2013    source источник
comment
отредактировано. Пожалуйста, проверьте. Я не использую трикотаж или CFX. Просто этот простой клиент.   -  person Anushree Acharjee    schedule 22.01.2013
comment
Почему вы используете HttpUrlConnection. Вы должны использовать HttpsUrlConnection. Также добавлен ли сертификат в ваш доверенный магазин?   -  person Satish    schedule 22.01.2013
comment
пробовали с HttpsUrlConnection. Также, можете ли вы рассказать, как мне создать доверенное хранилище, т.е. файл .jks? поскольку я могу напрямую вызывать URL-адрес в браузере, он не блокируется для использования HTTPS. ПРИМЕЧАНИЕ. xyz.com — это не точный URL, а похожий.   -  person Anushree Acharjee    schedule 22.01.2013
comment
Вставили код в следующий ответ. Вы можете сгенерировать .crt из браузера Mozilla или .cer из IE.   -  person Satish    schedule 22.01.2013
comment
Кроме того, что вы пытаетесь использовать в этих двух строках? String authString=URLEncoder.encode(username=anushree&password=anushree,UTF-8); распечатка.writeBytes(authString);   -  person Satish    schedule 22.01.2013
comment
обычно для защищенных URL-адресов при запуске в Firefox появляется всплывающее окно, в котором после принятия того же самого вы можете продолжить, и из этого всплывающего окна только мы получаем сертификат. Но когда я вызываю этот URL-адрес, как я уже говорил ранее, всплывающее окно не появляется. всплывающее окно есть, но это только для имени пользователя/пароля. Что я должен делать?   -  person Anushree Acharjee    schedule 22.01.2013
comment
Из значка сертификата перейдите к свойствам сертификата, и я думаю, что на 2-й вкладке вы можете загрузить сертификат. Почти аналогично IE. То есть вы нажимаете значок сертификата рядом с окном URL-адреса, просматриваете сертификаты, вторую вкладку копируете в файл...   -  person Satish    schedule 22.01.2013


Ответы (1)


Также попробуйте так. //Устанавливаем базовую аутентификацию в шапке

 String userPassword = "password"; 
 String encoding = new sun.misc.BASE64Encoder().encode(userPassword.getBytes()); 
 conn.setRequestProperty("Authorization", "Basic " + encoding); 
 String parameters = "username=" + URLEncoder.encode("user1", "UTF-8") + "&password=" + URLEncoder.encode("user1password", "UTF-8"); 
 printout.writeBytes (parameters);  
person Satish    schedule 22.01.2013