|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2000
Messaggi: 126
|
JAVA - connessione https
Mi sono fatto un programmino in java che mi permette di richiedere una pagina web specificando alcuni parametri: in pratica, dato l'url completo al documento da richiamare (es. http://forum.hwupgrade.it/index.php) e una stringa con i parametri da passare con metodo POST, clikkando su un JButton mi viene fornito il testo della pagina in una JTextArea.
Il programma funziona bene se uso il protocollo http, ma mi lancia invece una eccezione se uso il protocollo https. L'eccezione e' "javax.net.ssl.SSLHandshakeException: Could not find trusted certificate". Premettendo che il server a cui faccio la richiesta funziona correttamente, come faccio a risolvere il problema? Non me ne intendo molto di https. Vi posto la parte interessata di codice: Codice:
.....
try
{
URL myUrl=new URL(urlField.getText());
htmlArea.setText("");
URLConnection myConnection=myUrl.openConnection();
myConnection.setDoOutput(true);
myConnection.setDoInput(true);
myConnection.setUseCaches(false);
String request=postArea.getText();
DataOutputStream outStream=new DataOutputStream(myConnection.getOutputStream());
outStream.writeBytes(request);
outStream.flush();
outStream.close();
DataInputStream inStream=new DataInputStream(myConnection.getInputStream());
String inputLine;
while ((inputLine = inStream.readLine()) != null)
htmlArea.append(inputLine+"\n");
inStream.close();
}
catch(MalformedURLException exception)
{
htmlArea.setText("URL non valida!!!\n"+exception);
}
catch(IOException exception)
{
htmlArea.append("Eccezzione di input/output !!!\n"+exception);
}
.....
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
puoi fare in due modi:
1) se non hai grosse pretese di sicurezza puoi disabilitare il controllo sul certificato creandoti un trust manager ad hoc che valida tutti i certificati. 2) ti scarichi il certificato dal server e lo "installi" nel tuo truststore con i tool del jdk (consulta la documentazione per sapere come fare, poi al limite chiedi Ciao |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2000
Messaggi: 126
|
la prima soluzione dovrebbe andare bene
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Ecco un esempio di codice (non mio, preso da internet :o )
Codice:
// Create a trust manager that does not validate certificate chains
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) {
}
}
};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
}
// Now you can access an https URL without having the certificate in the truststore
try {
URL url = new URL("https://hostname/index.html");
} catch (MalformedURLException e) {
}
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Dovrebbe adattarsi bene al tuo caso
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Dec 2000
Messaggi: 126
|
Quote:
Adesso pero' mi da altre due eccezioni (in modo alternato): java.net.ConnectException: Connection timed out: connect oppure java.net.NoRouteToHostException: No route to host: connect ora cerco di studiare un po' il problema e vedo se riesco a risolvermelo da solo. (per il primo forse devo solo trovare il modo di settare un timeout piu' altro, per il secondo bho..) cmq dov'e' che hai trovato il codice che mi hai postato? magari trovo qualche altro esempio che mi risolve i problemi bye |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
no route to host -> no ha modo di raggiungere l'host a cui ti stai cercando di connettere! e' un problema di configurazione, non di codice. prova a pingare la macchine a cui ti connetti o a far telnet sulla 443, non dovresti riuscirci. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Dec 2000
Messaggi: 126
|
Cavolo! stasera funziona
ma quando avevo provato ieri sera ero sicuro che il server funzionava.. bho? forse avevo provato a usare il mio prog. proprio in un attimo che il server non era raggiungibile vabbe', l'importante che finalmente funziona tutto grazie per l'aiuto kingv, a buon rendere bye |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:26.



















