Bug 1321112 - DHE_DSS ciphers don't work with client certificates and OpenSSL using TLSv1.2
Summary: DHE_DSS ciphers don't work with client certificates and OpenSSL using TLSv1.2
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: gnutls
Version: 6.8
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Nikos Mavrogiannopoulos
QA Contact: Hubert Kario
URL:
Whiteboard:
Depends On: 1269239
Blocks: 1339222 1343211
TreeView+ depends on / blocked
 
Reported: 2016-03-24 16:58 UTC by Hubert Kario
Modified: 2017-03-21 09:03 UTC (History)
1 user (show)

Fixed In Version: gnutls-2.12.23-2.el6
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2017-03-21 09:03:01 UTC
Target Upstream Version:


Attachments (Terms of Use)
test certificates (19.72 KB, application/x-gzip)
2016-03-24 16:58 UTC, Hubert Kario
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2017:0574 0 normal SHIPPED_LIVE Moderate: gnutls security, bug fix, and enhancement update 2017-03-21 12:23:04 UTC

Description Hubert Kario 2016-03-24 16:58:01 UTC
Created attachment 1140055 [details]
test certificates

Description of problem:
GnuTLS clients and servers can't communicate with OpenSSL using DSA client certificates

Version-Release number of selected component (if applicable):
gnutls-2.8.5-19.el6_7.x86_64

How reproducible:
Always

Steps to Reproduce:
1. tar xzf certificates.tar.gz
2. openssl s_server -key 1024dsa-server/key.pem -cert 1024dsa-server/cert.pem -CAfile <(cat ca/cert.pem 1024dsa-ca/cert.pem) -cipher DSS -Verify 1
3. gnutls-cli --x509cafile ca/cert.pem --x509keyfile 1024dsa-client/key.pem --x509certfile 1024dsa-client/cert.pem --protocols TLS1.1 TLS1.2 -p 4433 localhost

alternatively:
2. gnutls-serv --echo -p 4433 --protocols TLS1.0 TLS1.1 TLS1.2 --x509keyfile 1024dsa-server/key.pem --x509certfile <(cat 1024dsa-server/cert.pem 1024dsa-ca/cert.pem) --x509cafile <(cat ca/cert.pem 1024dsa-ca/cert.pem) --require-cert
3. openssl s_client -CAfile ca/cert.pem -cipher DHE-DSS-AES128-SHA256 -key 1024dsa-client/key.pem -cert 1024dsa-client/cert.pem -connect localhost:4433 

Actual results:
From OpenSSL client:
139801902708552:error:14094438:SSL routines:SSL3_READ_BYTES:tlsv1 alert internal error:s3_pkt.c:1259:SSL alert number 80
139801902708552:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:184:

From gnutls server:
Error: Public key signature verification has failed.

From OpenSSL server:
139701378676552:error:0A071003:dsa routines:DSA_do_verify:BN lib:dsa_ossl.c:425:
139701378676552:error:1408807B:SSL routines:SSL3_GET_CERT_VERIFY:bad signature:s3_srvr.c:3061:

From gnutls client:
*** Fatal error: A TLS fatal alert has been received.
*** Received alert [51]: Decrypt error
*** Handshake has failed
GNUTLS ERROR: A TLS fatal alert has been received.


Expected results:
Connection successful

Additional info:
Using TLS1.1 makes the connection proceed as normal.
The certificates are signed with SHA-1

Comment 4 Nikos Mavrogiannopoulos 2016-08-09 14:39:43 UTC
Both these handshakes involve signing with DSA and other algorithm than SHA1.
This is not something defined by TLS, and it seems the implementations are not interoperable on that. I do not really think we should bother with that algorithm; I'll instead prohibit DSA to be used with anything else than SHA1.

<3>| HSK[0x10bf310]: verify handshake data: using DSA-SHA256
|<3>| HSK[0x133a470]: signing handshake data: using DSA-SHA256

Comment 5 Nikos Mavrogiannopoulos 2016-08-10 07:42:31 UTC
Resolved by disabling DSA-SHA224 and DSA-256 completely on the libgcrypt backend. It seems to be broken.

Comment 10 errata-xmlrpc 2017-03-21 09:03:01 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHSA-2017-0574.html


Note You need to log in before you can comment on or make changes to this bug.