pf_poa
Agosto 7, 2009, 5:42pm
#1
Boa tarde amigos!!
Estou trabalhando com URL e URLConnection. Tenho duas versões do meu aplicativo uma para Win e outra para Linux, as duas estão funcionando tranquilamente qndo a conexão é feita pelo protocolo http mas hj precisei modificar para https e deu o seguinte erro:
alguém pode me ajudar?? Não sei o q pode ser e preciso resolver isso ainda hoje!!
Valeu!!
Mikhas
Agosto 10, 2009, 10:16am
#2
Eu não entendo muito de SSL, mas não basta você mudar o protocolo do endereço para https para a aplicação passar a utiliza-lo.
É necessario criar certificados digitais para dizer que seu site/sistema é autentico, tem alguma criptografia envolvida e etc.
Você vai ter que pesquisar um pouco.
pf_poa
Agosto 10, 2009, 12:02pm
#3
Pesquisei e alterei a classe que estava usando de URLConnection para HttpsURLConnerction mas continua o mesmo erro.
Acho q ñ estou declarando ou atribuindo corretamente. Alguém tem algum exemplo de uso ou alguma outra idéia para me ajudar??
Valeu!!
Mikhas
Agosto 10, 2009, 1:54pm
#4
Google meu amigo,
meu primeiro resultado:
Tutorial Java SSL
Java SSL
pf_poa
Agosto 10, 2009, 3:17pm
#5
Estou usando o seguinte código e agora ñ gera nenhum, porém ñ obtenho retorno no log.
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
}
};
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
url = new URL(protocolo + ip + ":" + porta + diretorio + impressao);
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
InputStreamReader in1 = new InputStreamReader(conn.getInputStream(), Charset.forName("ISO-8859-1"));
BufferedReader reader = new BufferedReader(in1);
FileWriter conteudo = new FileWriter(new File(logImpressao), true);
PrintWriter saida = new PrintWriter(conteudo, true);
String linha = "";
Time time = new Time(conn.getDate());
String timeString = time.toString();
while ((linha = reader.readLine()) != null) {
saida.println(linha + "\n" + timeString);
}
reader.close();
}catch(Exception e){}
pf_poa
Agosto 10, 2009, 4:34pm
#6
Detalhe… o servidor ñ está no proxy…
E até onde eu entendi a questão dos certificados estaria resolvida com este trecho de código:
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
}
};
Me corrijam se eu entendi mal.
Valeu!!
pf_poa
Agosto 17, 2009, 3:16pm
#7
[RESOLVIDO] só para registrar…
fiz a conexão através do wget chamando pela classe Runtime.