Zkus naimportovat nový certifikát do používaného úložiště, tzn. spustit
keytool přesně tak jak jsi psal s novým serverovým certifikátem
(server.cer).
Libor
--
Bc. Libor Krzyžanek Qbizm technologies, a.s.
Analyst - Developer ... the art of software.
____________________________________________________________________
www.qbizm-technologies.cz www.qbizm.cz www.qbizm-services.cz
Tremi-M.Smolny napsal(a):
Kdysi jsme udělali malý komunikační program, který posílá data na
zabezpečený server. Nyní ale na serveru změnili certifikát, protože
starý přestal platit, a je tu problém. Doposud vše chodilo a jinak se
nic nezměnilo (ani verze JRE), proto z toho mám již hlavu celou zlámanou.
Upřímně řečeno nechce se mi moc měnit program, protože je to dost
dlouho, co se dělal a také změna programu problém nezpůsobila.
Můžete mne někdo navést správným směrem?
Předem děkuji Miloš
Hlásí to chybu:
javax.net.ssl.SSLHandshakeException:
java.security.cert.CertificateException: Could not find trusted
certificate
Pouštěno je to takhle:
rem (s certifikatem serveru ):
"C:\Program Files\Java\j2re1.4.2_09\bin\javaw.exe" -cp .\;.\abc.jar
-Djavax.net.ssl.trustStore=.\abccert abc.Application1
Přičemž úložiště certifikátů je vytvořeno takto (obsahuje jen 1
certif. z certifikátu serveru ve formátu x.509):
del abccert
"C:\Program Files\Java\j2re1.4.1_02\bin\keytool" -import -alias abc
-file .\server.cer -keystore .\abccert -storepass changeit
Začátek třídy komunikace:
ResourceBundle res = ResourceBundle.getBundle("abc");
String resFile = "abc.properties";
HttpURLConnection conn;//pripojeni k serveru
//priprava datoveho bufferu pro vystup
ByteArrayOutputStream ostream = new ByteArrayOutputStream(12);
//pouze pro pocitani
PrintWriter writer = new PrintWriter(ostream); //primo na server
private boolean prerusenoUzivatelem;//zda uzivatel prerusil danou akci
private izip.Frame1 frame; //odkaz pro moznost poslani infa na obrazovku
public abcfile(abc.Frame1 frame)
{ this.frame = frame; }
//ziskani odkazu na server, pripojeni na nej a nastaveni zakladnich
hlavicek
// KROME hlavicky o delce dat!
public void connectServer() throws Exception
{
URL zakladniURL = new URL(res.getString("ABC_URL"));
URLConnection conn0 = zakladniURL.openConnection();
conn = (HttpURLConnection) conn0;
conn.setDoOutput(true);
//conn.setRequestMethod("HEAD");
conn.setRequestProperty("From",res.getString("headerFrom"));
conn.setRequestProperty("Host",res.getString("headerHost"));
conn.setRequestProperty("Content-Type","multipart/form-data;
boundary="+boundary);
//conn.connect(); nelze pred nastavenim delky dat
}