14 Nefunkční přihlášení certifikátem

admin 17.01.2017 11:35

Dobrý den,

 

při přechodu na basic autentizaci máme problém s přístupy pomocí certifikátů (systémový i jako host. spis. služba). Zkoušeli jsme tento přístup i za pomocí Vašeho demonstračního příkladu, ale stejně jako v naší aplikaci, tak i tady obdržíme chybu: SSLHandshakeException.

 

Náš certifikát máme zaregistrován v czebox.cz jako systémový. V java keystore máme naimportovány postsignum v2 (jak kořenový, tak podřízený).

 

Nemůžete nás alespoň nasměrovat v čem by mohl být problém?

 

Přikládám výpis z dema:

---

Setting service uri to: https://ws1c.czebox.cz/cert/DS/dx
Setting service uri to: https://ws1c.czebox.cz/cert/DS/dz
Setting service uri to: https://ws1c.czebox.cz/cert/DS/df
Setting service uri to: https://ws1c.czebox.cz/cert/DS/DsManage
Setting service uri to: https://ws1c.czebox.cz/cert/DS/DsManage

>>> Calling services <<<

com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure - trying again..

---

 

Děkuji

Peřina

14.1 Re: Nefunkční přihlášení certifikátem

admin 17.01.2017 11:35

Dobrý den,

ujistěte se prosím, že váš certifikát je platný, tj. není například zneplatněný.

Ujistěte se, že váš certifikát nemá atribut Extended key usage nastavený na SSL/TLS server. Tato možnost je zejména u ICA certifikátů.

Vladimír

14.2 Re: Nefunkční přihlášení certifikátem

admin 17.01.2017 11:35

Dobrý den,

když si vypíšu obsah certifikátu, tak neobsahuje žádný záznam pro extendedKeyUsage:

 

Certificate:
Data:
Version: 3 (0x2)
Serial Number: 514682 (0x7da7a)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=CZ, O=\xC4\x8Cesk\xC3\xA1 po\xC5\xA1ta, s.p. [I\xC4\x8C 47114983], CN=PostSignum Public CA 2
Validity
Not Before: Sep  6 07:26:00 2010 GMT
Not After : Sep  6 07:26:00 2011 GMT
Subject: C=CZ, O=ATACO spol. s r.o. [I\xC4\x8C 44743475], CN=isds/serialNumber=S44874
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
00:cc:61:e1:47:0c:58:95:9c:26:58:d4:bc:ce:1d:
e8:9d:be:31:d5:81:61:35:c7:04:a5:73:3e:ef:53:
89:1c:ae:a3:5a:c4:aa:73:7f:30:f4:c1:bf:b4:a1:
ee:69:d0:f1:e9:0b:ba:37:6b:8f:c7:90:a9:e1:34:
c9:42:2e:70:b0:9e:dc:3b:b6:78:74:c2:84:d2:97:
94:e8:36:ae:78:b9:50:27:be:35:3b:fd:83:80:3a:
0a:a7:06:c4:aa:53:33:2a:32:11:4f:48:b7:71:67:
35:cf:46:bf:85:d7:3a:84:58:88:41:34:86:3d:97:
a9:5e:c1:9d:4b:31:a8:24:a5:ad:d9:1f:33:6d:23:
3a:a9:46:19:3a:0b:d0:ca:59:a3:33:14:a9:14:18:
27:a9:da:73:74:c7:45:b8:9a:f7:6c:a1:17:bb:da:
6d:20:f1:63:90:f4:4f:df:c6:f1:4c:99:c5:e0:bb:
16:c8:02:68:35:33:a6:e2:c9:94:c3:5c:b2:9a:97:
9e:82:1c:a8:0a:82:51:88:87:2b:87:59:b4:7f:0b:
c8:8b:c3:ea:a3:1a:b4:60:78:34:65:a9:ee:d3:99:
24:90:d9:d3:82:e0:fd:01:e3:8d:83:7e:77:13:74:
88:9c:19:13:33:1f:a2:36:33:bc:1a:a8:14:8c:22:
a9:79
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
email:info@ataco.cz, othername:<unsupported>
X509v3 Basic Constraints:
CA:FALSE
X509v3 Certificate Policies:
Policy: 2.23.134.1.2.1.8.200
CPS: http://www.postsignum.cz

Authority Information Access:
CA Issuers - URI:http://www.postsignum.cz/crt/pspublicca2.crt
CA Issuers - URI:http://www2.postsignum.cz/crt/pspublicca2.crt
CA Issuers - URI:http://postsignum.ttc.cz/crt/pspublicca2.crt

X509v3 Key Usage: critical
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Authority Key Identifier:
keyid:48:EF:3E:D4:EA:89:89:A3:E9:E2:3F:DB:EF:8C:42:B1:0A:F8:C8:D1

X509v3 CRL Distribution Points:
URI:http://www.postsignum.cz/crl/pspublicca2.crl
URI:http://www2.postsignum.cz/crl/pspublicca2.crl
URI:http://postsignum.ttc.cz/crl/pspublicca2.crl

X509v3 Subject Key Identifier:
5D:8F:2A:96:85:F5:20:2E:91:88:54:AA:01:AF:EE:7F:F9:A7:26:68
Signature Algorithm: sha256WithRSAEncryption
67:d8:af:09:cd:9b:d6:d3:f8:e7:90:6b:17:e3:4c:eb:32:cb:
0d:b3:a7:b8:d8:b2:45:7c:76:7b:8b:7f:2e:8e:70:d2:ca:d4:
e7:58:fb:89:d0:6e:51:35:70:46:36:6d:6e:b9:72:b2:0c:50:
df:69:33:ba:57:71:1e:7d:ba:e8:d0:ab:29:61:d3:4b:fa:a5:
10:f8:f4:8d:32:34:c9:82:98:b3:26:5e:f1:14:42:9b:ca:97:
86:c3:7f:8d:74:a4:df:01:be:39:c0:18:54:91:d2:22:c3:ca:
dd:33:38:a5:63:0b:2f:55:b3:f3:6f:fb:35:e5:fb:f7:8c:1c:
54:52:dd:ec:a5:18:f8:34:ba:1f:aa:94:9a:a0:4b:14:6b:a4:
11:c1:73:25:dd:60:87:0a:0a:7e:a0:67:93:58:06:58:cf:b1:
cc:d7:a8:f4:b8:bf:25:60:da:3c:93:1f:fd:f3:39:76:14:26:
c2:d9:66:57:de:b2:9e:74:f5:26:10:75:a6:d6:3a:19:09:bd:
84:8e:02:f3:35:f3:7c:aa:7c:ab:a6:dd:fa:b7:18:82:64:4f:
bb:51:ee:f6:66:ae:a9:98:22:a3:5c:23:c5:d0:6e:fa:1c:b4:
8d:1b:4f:c1:01:89:40:ca:8c:e0:13:06:f9:06:7d:b2:4d:64:
65:02:b2:d4

 

Certifikát je zaregistrovaný pouze jako systémový certifikát u naší schránky s id "tddavbt"

 

Děkuji

 

Martin Peřina

 

14.3 Re: Nefunkční přihlášení certifikátem

admin 17.01.2017 11:35

Doporučujeme následující postup:
1. Ověřit, zda aplikací používaný keystore obsahuje skutečně certifikát
a k němu patřící privátní klíč. Např.:
======
keytool -list -keystore keystore.jks
Enter keystore password: 

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

importkey, Sep 15, 2010, PrivateKeyEntry,
Certificate fingerprint (MD5):
6A:43:D1:C1:7B:0D:3A:9F:CE:10:74:C8:99:90:D5:A4
=======

2. Ověřit zda se podaří navázat SSL spojení jinou aplikací - např.:

a) Naimportovat certifikát a klíč do browseru a otevřít URL
https://ws1c.czebox.cz/cert/DS/df -> po potvrzení výběru certifikátu by
se měla zobrazit prázdná stránka.

nebo

b) Pomocí příkazu curl (linux) - uložit certifikát a klíč do pem
souboru a zadat:
"curl -k --cert cert.pem --key private.pem
https://ws1c.czebox.cz/cert/DS/df -v" -> výsledkem bude odpověď 200.

nebo

c) Otestovat si spojení v samostatné java aplikaci - např.
=========
import java.net.*;
public class testhttps {
public static void main(String[] args) {
try {
URL url = new URL("https://ws1c.czebox.cz/cert/DS/df");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
System.out.println("Response: "+con.getResponseCode());
}
catch(Exception e){
e.printStackTrace();
}
}
==========
Po zkompilování použít:
"java -Djavax.net.ssl.keyStore=keystore.jks
-Djavax.net.ssl.keyStorePassword=importkey
-Djavax.net.ssl.trustStore=truststore.jks
-Djavax.net.ssl.trustStorePassword=changeme testhttps"
(patřičně upravte názvy keystoru, truststore a hesla).
Výsledek by měl být "Response: 200"

14.4 Re: Nefunkční přihlášení certifikátem

admin 17.01.2017 11:35

Dobrý den,

tak problém nakonec nebyl v certifikátu, ale v kombinaci JDK 1.6.0 a demonstračního příkladu.

V JDK 1.6.0 je nutné změnit třídu com.sun.xml.ws.developer.JAXWSProperties na třídu

com.sun.xml.internal.ws.developer.JAXWSProperties při nastavování SSLSocketFactory

s klientským certifikátem v metodě ServiceManager.authenticate a pak vše funguje ok.

 

Díky za pomoc

 

Martin Peřina