amd64/126693: DNSSEC cryptographic validation doesn't work on amd64 (openssl problem)

Michael Sinatra michael at rancid.berkeley.edu
Mon Aug 25 17:30:05 UTC 2008


The following reply was made to PR amd64/126693; it has been noted by GNATS.

From: Michael Sinatra <michael at rancid.berkeley.edu>
To: FreeBSD-gnats-submit at FreeBSD.org, freebsd-amd64 at FreeBSD.org
Cc:  
Subject: Re: amd64/126693: DNSSEC cryptographic validation doesn't work on
 amd64	(openssl problem)
Date: Mon, 25 Aug 2008 10:29:03 -0700

 I determined this problem to be a rather complex interaction between 
 DNSSEC, pf configurations, and the different IP subnets that the hosts 
 were on.  After some testing, I can verify that DNSSEC validation works 
 on 6.3-RELEASE, 8-CURRENT, and 7-STABLE, all on the amd64 platform.
 
 I'll request that this PR be closed.  Sorry for the noise.
 
 michael
 
 On 08/20/08 12:35, Michael Sinatra wrote:
 >> Number:         126693
 >> Category:       amd64
 >> Synopsis:       DNSSEC cryptographic validation doesn't work on amd64 (openssl problem)
 >> Confidential:   no
 >> Severity:       non-critical
 >> Priority:       medium
 >> Responsible:    freebsd-amd64
 >> State:          open
 >> Quarter:        
 >> Keywords:       
 >> Date-Required:
 >> Class:          sw-bug
 >> Submitter-Id:   current-users
 >> Arrival-Date:   Wed Aug 20 19:40:01 UTC 2008
 >> Closed-Date:
 >> Last-Modified:
 >> Originator:     Michael Sinatra <michael-pr at rancid.berkeley.edu>
 >> Release:        FreeBSD 7.0-STABLE amd64
 >> Organization:
 > University of California, Berkeley
 >> Environment:
 > System: FreeBSD drl9.berkeley.edu 7.0-STABLE FreeBSD 7.0-STABLE #3: Thu Aug 14 09:44:49 PDT 2008     michael at drl9.berkeley.edu:/usr/obj/usr/src/sys/DRL  amd64
 >> Description:
 > 
 > DNSSEC validation fails on FreeBSD/amd64, regardless of the DNS
 > server (caching resolver software being used).  Attempting to use
 > both BIND (9.4.2-P2 and 9.5.0-P2) and unbound (1.0.2) yields errors
 > when DNSSEC validation is attempted.  These errors do not occur
 > with the very same configuration on i386.  The errors that occur
 > indicate that the digital signatures are bad; when the same
 > trust-anchors and queries are made on i386, they properly validate.
 > 
 > This appears to be an issue with OpenSSL.  Currently, all DNSSEC
 > signing keys that I have found are of type RSASHA1; I have therefore
 > not been able to test it with DSA keys.
 > 
 > This issue does not occur on Gentoo Linux--both i386 and x86_64 can
 > run a validating connfiguration of BIND..
 > 
 > CSUP and rebuild of the system in question was done on the same day
 > that the kernel was built.  Other systems--all rebuilt in July or
 > August--have also been tested with the same result.
 > 
 >> How-To-Repeat:
 > 
 > 1. Install stock FreeBSD/amd64 system.  csup-and-rebuild to a recent
 > version.
 > 
 > 2. Install unbound from ports.  Configure to be a caching resolver.
 > 
 > 3. Add the following line to /usr/local/etc/unbound/unbound.conf:
 > 
 >         trust-anchor: "se. DNSKEY 257 3 5 AwEAAdKc1sGsbv5jjeJ141IxNSTdR+nbtFn+JKQpvFZETaY5iMutoyWH a+jCp0TBBAzB2trGHzdi7E55FFzbeG0r+G6SJbJ4DXYSpiiELPiu0i+j Pp3C3kNwiqpPpQHWaYDS9MTQMu/QZHR/sFPbUnsK30fuQbKKkKgnADms 0aXalYUuCgDyVMjdxRLz5yzLoaSO9m5ii5cI0dQNCjexvj9M4ec6woi6 +N8v1pOmQAQ9at5Fd8A6tAxZI8tdlEUnXYgNwb8eVZEWsgXtBhoyAru7 Tzw+F6ToYq6hmKhfsT+fIhFXsYso7L4nYUqTnM4VOZgNhcTv+qVQkHfO OeJKUkNB8Qc="
 > 
 > 4. dig +dnssec se @localhost (or whatever interface unbound is listening on)
 > 
 > 5. On i386, you get a validated response (with the ad bit set). On
 > amd64, you get a SERVFAIL.
 > 
 > ALTERNATE STEPS 2-5 with BIND:
 > 
 > 2. Install either bind94 or bind95 from ports.  Make any necessary
 > mods to the config in /etc/namedb/named.conf bundled with FreeBSD
 > to get a basic caching resolver working.
 > 
 > 3a. add the following lines to /etc/namedb/named.conf in the 'options'
 > section:
 > 
 >   dnssec-enable yes;
 >   dnssec-validation yes;
 >   dnssec-lookaside . trust-anchor dlv.isc.org;
 > 
 > 3b. Add the following lines to the global section of /etc/namedb/named.conf:
 > 
 > trusted-keys {
 >     dlv.isc.org. 257 3 5 "BEAAAAPp1USu3BecNerrrd78zxJIslqFaJ9csRkxd9LCMzvk9Z0wFzoF kWAHMmMhWFpSLjPLX8UL6zDg85XE55hzqJKoKJndRqtncUwHkjh6zERN uymtKZSCZvkg5mG6Q9YORkcfkQD2GIRxGwx9BW7y3ZhyEf7ht/jEh01N ibG/uAhj4qkzBM6mgAhSGuaKdDdo40vMrwdv0CHJ74JYnYqU+vsTxEIw c/u+5VdA0+ZOA1+X3yk1qscxHC24ewPoiASE7XlzFqIyuKDlOcFySchT Ho/UhNyDra2uAYUH1onUa7ybtdtQclmYVavMplcay4aofVtjU9NqhCtv f/dbAtaWguDB";
 > };
 > 
 > 4. dig +dnssec br @localhost (br is in the ISC DLV registry)
 > 
 > 5. On i386, you get a validated response (with the ad bit set). On
 > amd64, the query simply times out.  If you change the trusted-key
 > to something obviously bogus, the exact behavior on amd64 is
 > replicated.  The debug logs show the same--the key appears to be
 > bad.
 > 
 > It appears that cryptographic processing for RSASHA1 on amd64 just
 > isn't working quite right, which is why I suspect something in
 > OpenSSL.
 > 
 >> Fix:
 > 
 > The following things HAVE NOT WORKED:
 > 
 > 0. Using the OpenSSL installed in the base system.
 > 
 > 1. Using latest ports version of OpenSSL and linking BIND against it.
 > 
 > 2. Compiling ports version of OpenSSL with -O instead of -O3 and
 > linking BIND against it.
 > 
 > 3. Using a different version of gcc (3.3.6 and 4.4.0 both tried)
 > to compile OpenSSL from ports & linking BIND to that.
 > 
 > 4. Compiling static ports OpenSSL libraries and statically linking
 > BIND against it.
 > 
 > 5. Compiling ports OpenSSL with the 'no-asm' option and linking
 > BIND to it.
 > 
 > I'll happily try other workarounds/suggestions.
 >> Release-Note:
 >> Audit-Trail:
 >> Unformatted:
 


More information about the freebsd-amd64 mailing list