Teknik FAQ



Innehåll:

Kommunikation 

Q: Varför får man "javax.net.ssl.SSLHandshakeException" för utgående trafik från tjänsteplattform mot tjänsteproducent

A: Det kan finnas flera anledningar varav de vanligaste är

  1. Klient (SKLTPs) certifikatets CA (root) saknas i tjänsteproducentens truststore  (Received fatal alert: handshake_failure)

  2. Det saknas ett CA (root) certifikat i klientens (SKLTPs) truststore alternativt en felaktig konfiguration av truststore och den angivna filen finns inte  (sun.security.validator.ValidatorException: No trusted certificate found)

  3. Servers namn som angivits i tjänsteproducentens certifikat (CN) stämmer ej överens med namnet eller IP adressen  som angivits i URL:en   (java.security.cert.CertificateException: No name matching ...)

  4. Tjänsteproducenten använder sig av GCM (Galois/Counter Mode) ciphers och dessa stöds ej av standard Java security (sun.security.validator.ValidatorException: Certificate chaining error)

  5. Fel certifikat installerat hos tjänsteproducenten. Troligen har signeringscertifikatet felaktigt installerats på servern istället för autentiseringscertifikatet från SITHS. (KeyUsage does not allow key encipherment)

Använd openssl för att kontrollera tjänsteproducentens certifikat:

$ openssl s_client [ -cert <client-cert> -key <private-key> ] -connect <producer-host-name>:<port> -showcerts

 


 

Q: Varför får man "javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair" för utgående trafik från tjänsteplattform mot tjänsteproducent

A: Java 7 och tidigare versioner stödjer ej Diffie-Hellman (DH) modulus nyckellängd överstigande 1024 bits. Använder tjänsteproducenten certifikat med längre nyckellängd och i synnerhet Apache 2.4.7 eller senare så är detta fel typiskt. Åtgärdas genom att lägga till specifika DH parametrar till tjänsteproducentens certifikat. Se en bit ned på denna sida från Apache (Why do I get handshake failures with Java-based clients when using a certificate with more than 1024 bits?)

Tjänsteproducenten måste lägga till specifika DH parametrar genom att addera följande (enligt RFC 2409) till varje server certifikat (PEM): 

1 2 3 4 5 -----BEGIN DH PARAMETERS----- MIGHAoGBAP//////////yQ/aoiFowjTExmKLgNwc0SkCTgiKZ8x0Agu+pjsTmyJR Sgh5jjQE3e+VGbPNOkMbMCsKbfJfFDdP4TVtbVHCReSFtXZiXn7G9ExC6aY37WsL /1y29Aa37e44a/taiZ+lrp8kEXxLH+ZJKGZR7OZTgf//////////AgEC -----END DH PARAMETERS-----

 

Java 8 stödjer upp till 2048, se denna artikel.


 

Q: Hur testar jag konnektivitet mot NTjP utan certifikat?

A: Använd t ex openssl för att testa konnektivitet:

1 2 3 4 5 6 7 8 ~ $ openssl s_client -connect qa.esb.ntjp.se:443 CONNECTED(00000003) depth=2 /C=SE/O=Inera AB/CN=SITHS Root CA v1 PP … kan komma några fel här beroende på att SITHS CA-cert inte finns i lokalt truststore. Det viktiga är att se CONNECTED ovan och egenskaper för NTjP-certifikatet.

Q: Hur testar jag konnektivitet mot NTjP med certifikat?

A:

1 $ openssl s_client [ -cert <client-cert> -key <private-key> ] -connect qa.esb.ntjp.se:443 -showcerts