/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
SSL forbindelse til webservice
Fra : Knud Jensen


Dato : 21-04-05 07:58

Hej,

Jeg er ved at oprette en SSL forbindelse til en webservice - og har i den
forbindelse fundet ud af hvordan man læser et certifikt, ligger det i en
Keystore og hvordan man læser en public key i et certifikat.

Problemet består nu i at jeg ikke aner hvad man skal bruge publickey,
keystore eller certifikat herefter. Hvordan skal man bruge de enkelte dele?

Dette betyder også at jeg får følgende exception:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
faultActor:
faultNode:
faultDetail:

Alt hjælp kan bruges - jeg har snart siddet og kaget rundt i alt dette
igennem et par uger.



 
 
Nikolaj Hansen (21-04-2005)
Kommentar
Fra : Nikolaj Hansen


Dato : 21-04-05 22:36

Hejsa,

Om du bruger SHTTP eller HTTP kald burde for din kodes udseende være
ligegyldigt serverside. Det er rigtigt, at du skal bruge din keystore på
client siden.

Men ud fra det du siger, er det temmeligt svært at give et bud på,
præcis hvor fejlen ligger. Det kunne lyde som om, at den ikke kan finde
keystore på din client.

Prøv evt. at følge denne vejledning:

http://www.pankaj-k.net/WSOverSSL/WSOverSSL-HOWTO.html

Og som altid har IBM nogle hamre gode eksempler på hvordan:

http://www-106.ibm.com/developerworks/webservices/library/ws-sec1.html

mvh

Nikolaj Hansen

Brian (22-04-2005)
Kommentar
Fra : Brian


Dato : 22-04-05 09:42

Hej igen,

Jeg har prøvet at kigge de to links igennem - men jeg har ikke kunnet finde
hjælp. Jeg prøver at poste min kode:
/********************************
public class Temp
{
String opslag = "27103235";
String user = "bruger";
String kode = "hemmeligt";
int level = 2;
LegalUnit unit = null;
CVRPortType port = null;
CVRBindingStub stub = null;
CVRWebServiceLocator cvr = null;
Service service = null;

public Temp()
{
try
{
System.setProperty("javax.net.debug", "all");
File file = new File("c:"+File.separatorChar+"onlinecvrdk.crt");
CertificateReader cert = new CertificateReader(file.toString());
// Create KeyStore to hold certificate from CVR
KeyStore keyStore = CertificateReader.createKeyStore();
// Create X509Certificate object from downloaded file with
certificate
X509Certificate x509certificate =
CertificateReader.getCertificate(file.toString());
// Check validity of certificate
//CertificateReader.checkCertificateValidity(x509certificate);
// Put X509Certificate in keyStore
keyStore.setCertificateEntry("MyCertificate", x509certificate);
// Get public key from MyCertificate via keyStore
PublicKey publicKey =
keyStore.getCertificate("MyCertificate").getPublicKey();
// Output publicKey to Console


SSLContext sslContext = SSLContext.getInstance("SSLv3");
TrustManagerFactory trustMgtFactory =
TrustManagerFactory.getInstance("SunX509");
trustMgtFactory.init(keyStore);
sslContext.init(null, trustMgtFactory.getTrustManagers(), null);
SSLSocketFactory sslSocketFactory =
sslContext.getSocketFactory();
HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory);

CVRWebServiceLocator cvr = new CVRWebServiceLocator();
URL cascadeURL = new URL(cvr.getCVRPortAddress());
CVRBindingStub stub = new CVRBindingStub(cascadeURL,cvr);
stub.setPassword(kode);
stub.setUsername(user);

/*
Det er denne linie der giver problemer
*/
LegalUnit unit = stub.getLegalUnit(user,kode,opslag,1);

} catch (KeyStoreException e) {
e.printStackTrace(); //To change body of catch statement use
File | Settings | File Templates.
} catch (CertificateException e) {
e.printStackTrace(); //To change body of catch statement use
File | Settings | File Templates.
} catch (NoSuchAlgorithmException e) {
e.printStackTrace(); //To change body of catch statement use
File | Settings | File Templates.
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use
File | Settings | File Templates.
} catch (KeyManagementException e) {
e.printStackTrace(); //To change body of catch statement use
File | Settings | File Templates.
}
}

************************************************/
Problemet er at linien LegalUnit unit =
stub.getLegalUnit(user,kode,opslag,1); Jeg ved at der ligger et certifikat i
min keystore fordi jeg udskriver den hver gang jeg starter programmet Men
er dr der noge helt fundamental jeg overser? Den URL der gives med til
stuben skal det være en som der er åbnet udfra HttpsURLConnection for at
associsere keystoren med https-addressen?



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409074
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste