Project

General

Profile

Das TCToken konnte nicht empfangen werden.

Added by Torsten Brodbeck over 7 years ago

Hallo,

erst einmal vielen Dank für die tolle "Open eCard App". Sie gefällt mir sehr gut und scheint releasestabiler mit Firefox zu sein, als die alte AusweisApp :-)

Leider kann ich mich nicht bei allen Portalen erfolgreich anmelden.

Z.B. unter tk-online.de gibt der DEBUG-Log folgendes aus:
---------------------------------------------------
2016-09-29 22:36:19,274 [Thread-6] INFO o.o.binding.tctoken.ResourceContext:206 - Trying to load resource from: https://www.tk.de/centaurus/TcTokenServlet/79DEEF9656A03E45
2016-09-29 22:36:19,332 [Thread-6] DEBUG o.o.binding.tctoken.ResourceContext:243 - Performing TLS handshake.
2016-09-29 22:36:19,437 [Thread-6] ERROR o.o.c.t.ClientCertDefaultTlsClient:282 - TLS error sent.
2016-09-29 22:36:19,438 [Thread-6] ERROR o.o.c.t.ClientCertDefaultTlsClient:283 - TLS: Illegal parameter in handshake [illegal_parameter=47] --> Failed to read record
org.openecard.bouncycastle.crypto.tls.TlsFatalAlert: illegal_parameter(47)
at org.openecard.bouncycastle.crypto.tls.TlsUtils.verifySupportedSignatureAlgorithm(TlsUtils.java:955)
at org.openecard.bouncycastle.crypto.tls.AbstractTlsKeyExchange.parseSignature(AbstractTlsKeyExchange.java:27)
at org.openecard.bouncycastle.crypto.tls.TlsECDHEKeyExchange.processServerKeyExchange(TlsECDHEKeyExchange.java:83)
at org.openecard.bouncycastle.crypto.tls.TlsClientProtocol.handleHandshakeMessage(TlsClientProtocol.java:453)
at org.openecard.bouncycastle.crypto.tls.TlsProtocol.processHandshake(TlsProtocol.java:354)
at org.openecard.bouncycastle.crypto.tls.TlsProtocol.processRecord(TlsProtocol.java:272)
at org.openecard.bouncycastle.crypto.tls.RecordStream.readRecord(RecordStream.java:174)
at org.openecard.bouncycastle.crypto.tls.TlsProtocol.safeReadRecord(TlsProtocol.java:511)
at org.openecard.bouncycastle.crypto.tls.TlsProtocol.blockForHandshake(TlsProtocol.java:183)
at org.openecard.bouncycastle.crypto.tls.TlsClientProtocol.connect(TlsClientProtocol.java:107)
at org.openecard.binding.tctoken.ResourceContext.getStreamInt(ResourceContext.java:244)
at org.openecard.binding.tctoken.ResourceContext.getStream(ResourceContext.java:197)
at org.openecard.binding.tctoken.ResourceContext.getStream(ResourceContext.java:174)
at org.openecard.binding.tctoken.TCTokenContext.generateTCToken(TCTokenContext.java:73)
at org.openecard.binding.tctoken.TCTokenRequest.parseTCTokenRequestURI(TCTokenRequest.java:201)
at org.openecard.binding.tctoken.TCTokenRequest.convert(TCTokenRequest.java:115)
at org.openecard.binding.tctoken.ActivationAction.processTcTokenOrActivationObject(ActivationAction.java:375)
at org.openecard.binding.tctoken.ActivationAction.processRequest(ActivationAction.java:244)
at org.openecard.binding.tctoken.ActivationAction.checkRequestParameters(ActivationAction.java:224)
at org.openecard.binding.tctoken.ActivationAction.execute(ActivationAction.java:111)
at org.openecard.addon.bind.AppPluginActionProxy.execute(AppPluginActionProxy.java:55)
at org.openecard.control.binding.http.handler.HttpAppPluginActionHandler.handle(HttpAppPluginActionHandler.java:111)
at org.openecard.apache.http.protocol.HttpService.doService(HttpService.java:437)
at org.openecard.apache.http.protocol.HttpService.handleRequest(HttpService.java:342)
at org.openecard.control.binding.http.HttpService$1.run(HttpService.java:131)
2016-09-29 22:36:19,441 [Thread-6] ERROR o.o.b.tctoken.ActivationAction:391 - Failed to retrieve the TCToken.
2016-09-29 22:36:19,442 [Thread-6] DEBUG o.o.b.tctoken.ActivationAction:392 - Failed to retrieve the TCToken.
org.openecard.binding.tctoken.ex.TCTokenRetrievalException: Failed to retrieve the TCToken.
at org.openecard.binding.tctoken.TCTokenContext.generateTCToken(TCTokenContext.java:76)
at org.openecard.binding.tctoken.TCTokenRequest.parseTCTokenRequestURI(TCTokenRequest.java:201)
at org.openecard.binding.tctoken.TCTokenRequest.convert(TCTokenRequest.java:115)
at org.openecard.binding.tctoken.ActivationAction.processTcTokenOrActivationObject(ActivationAction.java:375)
at org.openecard.binding.tctoken.ActivationAction.processRequest(ActivationAction.java:244)
at org.openecard.binding.tctoken.ActivationAction.checkRequestParameters(ActivationAction.java:224)
at org.openecard.binding.tctoken.ActivationAction.execute(ActivationAction.java:111)
at org.openecard.addon.bind.AppPluginActionProxy.execute(AppPluginActionProxy.java:55)
at org.openecard.control.binding.http.handler.HttpAppPluginActionHandler.handle(HttpAppPluginActionHandler.java:111)
at org.openecard.apache.http.protocol.HttpService.doService(HttpService.java:437)
at org.openecard.apache.http.protocol.HttpService.handleRequest(HttpService.java:342)
at org.openecard.control.binding.http.HttpService$1.run(HttpService.java:131)
Caused by: java.io.IOException: Internal TLS error, this could be an attack
at org.openecard.bouncycastle.crypto.tls.TlsProtocol.failWithError(TlsProtocol.java:879)
at org.openecard.bouncycastle.crypto.tls.TlsProtocol.safeReadRecord(TlsProtocol.java:522)
at org.openecard.bouncycastle.crypto.tls.TlsProtocol.blockForHandshake(TlsProtocol.java:183)
at org.openecard.bouncycastle.crypto.tls.TlsClientProtocol.connect(TlsClientProtocol.java:107)
at org.openecard.binding.tctoken.ResourceContext.getStreamInt(ResourceContext.java:244)
at org.openecard.binding.tctoken.ResourceContext.getStream(ResourceContext.java:197)
at org.openecard.binding.tctoken.ResourceContext.getStream(ResourceContext.java:174)
at org.openecard.binding.tctoken.TCTokenContext.generateTCToken(TCTokenContext.java:73)
... 11 common frames omitted
2016-09-29 22:36:19,442 [Thread-6] DEBUG o.o.b.tctoken.ActivationAction:393 - Returning result:
BindingResult <RESOURCE_UNAVAILABLE, 'Das TCToken konnte nicht empfangen werden.'>
-----------------------------------------
Der Login unter https://epetitionen.bundestag.de/epet/petuebersicht/mz.nc.html bzw. https://www.cosmosdirekt.de/ hingegen funktioniert tadellos.


Replies (12)

RE: Das TCToken konnte nicht empfangen werden. - Added by Tobias Wich over 7 years ago

Das Problem liegt beim tk-online server, der das TCToken ausliefert. Und zwar wird versucht den DH Key Exchange mit einem nicht in ClientHello angegebenen und außerdem laut BSI nicht mehr zulässigen Algorithmus (Siehe BSI TR-02102) durchzuführen.
Der Signaturalgorithmus ist RSA-SHA1 wobei für RSA nur folgende Hash Algorithmen im ClientHello (siehe Anhang) angegeben sind: SHA224, SHA256, SHA384, SHA512

RFC 5246 Abs. 7.4.3. Server Key Exchange Message

If the client has offered the "signature_algorithms" extension, the
signature algorithm and hash algorithm MUST be a pair listed in that
extension.

Dies ist ein klares Fehlverhalten des TLS Servers, da ein nicht angegebener Algorithmus verwendet wird.

RE: Das TCToken konnte nicht empfangen werden. - Added by Torsten Brodbeck over 7 years ago

Ok, danke.

Ich werde das der TK melden.

RE: Das TCToken konnte nicht empfangen werden. - Added by Torsten Brodbeck over 7 years ago

Leider scheinen noch mehrere Portale so zu arbeiten :-(

Bei https://www.service-bw.de und http://www.deutsche-rentenversicherung.de bekomme ich denselben Fehler.

Irgendwie scheint AusweisApp2 eine Fallback-Option zu haben bzw. funktioniert weiterhin mit dem legacy Algorithmus SHA1.

Könnte man nicht ebenfalls so eine Fallback-Funktion einbauen? Denn ich befürchte, dass die Portale wenig Anreiz haben, den Algorithmus umzustellen, solange AusweisApp2 damit umgehen kann.

RE: Das TCToken konnte nicht empfangen werden. - Added by Hans-Martin Haase over 7 years ago

Hi,

welche Optionen sind denn unter Einstellungen -> Allgemeine Einstellungen -> Legacy Verhalten (kann leicht abweichen, hab das on the fly aus einer englischen Version übersetzt) angehakt? Eine Zeit lang konnte man damit fast jeden Server benutzen.

RE: Das TCToken konnte nicht empfangen werden. - Added by Detlef Hühnlein over 7 years ago

Hallo zusammen,

die letzten systematischen Tests der damals (Stand Januar 2016) verfügbaren eServices finden sich
unter https://dev.openecard.org/dmsf/files/718/view . Es würde mich interessieren, wie viel besser
das Ergebnis heute aussieht.

VG,
dh

RE: Das TCToken konnte nicht empfangen werden. - Added by Torsten Brodbeck over 7 years ago

Hallo Hans-Martin,

meine Einstellungen sind wie folgt und sollten die Default-Einstellungen sein:

Hallo Detlef,

leider habe ich keine Berechtigung, die Testergebnisse anzuschauen.

Grüße
Torsten

RE: Das TCToken konnte nicht empfangen werden. - Added by Detlef Hühnlein over 7 years ago

Hallo Torsten,

der Zugriff sollte nun klappen.

@all, ich mal unter https://dev.openecard.org/projects/open-ecard/wiki/EService-Tests eine Wiki-Seite angefangen,
auf der wir die entsprechenden Testergebnisse zusammentragen sollten.

VG,
dh

RE: Das TCToken konnte nicht empfangen werden. - Added by Torsten Brodbeck over 7 years ago

Hallo Detlef,

vielen Dank. Jetzt kann ich zugreifen :-)

Leider haben die angegebenen Parameter für tk-online.de auch nichts gebracht. Es kommt derselbe Fehler :-(

Ich habe meine Erfahrungen in die Wiki-Seite "EService-Tests" eingetragen.

Grüße

Torsten

RE: Das TCToken konnte nicht empfangen werden. - Added by Tobias Wich over 7 years ago

Es war klar, dass die Parameter keinen Unterschied bringen, da die Signature Algorithms davon nicht gesteuert werden können.
Das angehängte Build verwendet bei aktiviertem "weak crypto" zusätzlich SHA1. Wenn es keine weiteren Probleme gibt könnten wir daraus einen Bugfix release machen. Das entbehrt selbstverständlich nicht die betroffenen Anbieter auf ihre Unzulänglichkeit aufmerksam zu machen.

Ich vermute, dass die TK ihren TLS Stack von 1.0 auf 1.2 gestellt hat. TLS 1.0 kennt die Signature Algorithms extension nicht weshalb dort durch die legacy Option TLS 1.0 erlauben der Dienst funktionierte.

RE: Das TCToken konnte nicht empfangen werden. - Added by Torsten Brodbeck over 7 years ago

Hallo Tobias,

besten Dank für den Fix.

Nun funktionieren alle meine Portale wieder :-)

D.h. die vorherigen EService-Portale Cosmos-Direkt und EPetitionen, und neuerdings wieder tk-online sowie Deutsche Rentenversicherung.

Für mich ist die Version super!

Grüße

Torsten

RE: Das TCToken konnte nicht empfangen werden. - Added by Torsten Brodbeck over 7 years ago

Mit der Version 1.2.3 ist alles wieder perfekt.

Grüße

RE: Das TCToken konnte nicht empfangen werden. - Added by Max S over 7 years ago

Antwort von TK:

Sie haben Recht, der beim DH Key Exchange zusätzlich eingesetzte Hash Algorithmus war SHA1.

Dieses ist bei all unseren Tests nicht aufgefallen, da hier das Augenmerk auf einer sicheren Verschlüsselung lag.

Wir hatten den Hash Algorithmus SHA1 als nicht zulässig konfiguriert, jedoch leider nicht bei der Sicherung des DH Key Exchange.

Vielen Dank für Ihren Hinweis, wir haben unsere Konfiguration entsprechend angepasst und nutzen jetzt SHA256.

Falls Sie Fragen haben oder wir Sie unterstützen können, rufen Sie uns einfach an oder schreiben Sie uns eine E-Mail. Wir sind gern für Sie da.

Gerade geprüft, mit V 1.2.4 braucht man nur noch die Option "CAR als String".

(vllt. passt einer die Wiki-Seite an, ich darf nicht...)

    (1-12/12)