mirror of
https://github.com/coredns/coredns.git
synced 2026-06-15 13:40:11 -04:00
plugin/dnssec: sign each RRset with the zone that owns its name, not the query zone (#8138)
Signed-off-by: Björn Kinscher <code@bjoern-kinscher.de> Co-authored-by: Björn Kinscher <code@bjoern-kinscher.de>
This commit is contained in:
@@ -93,21 +93,34 @@ func (d Dnssec) Sign(state request.Request, now time.Time, server string) *dns.M
|
||||
return req
|
||||
}
|
||||
|
||||
zones := plugin.Zones(d.zones) // only sign if CNAME is not outside of our zones
|
||||
for _, r := range rrSets(req.Answer) {
|
||||
signer := zones.Matches(r[0].Header().Name)
|
||||
if signer == "" {
|
||||
continue
|
||||
}
|
||||
ttl := r[0].Header().Ttl
|
||||
if sigs, err := d.sign(r, state.Zone, ttl, incep, expir, server); err == nil {
|
||||
if sigs, err := d.sign(r, signer, ttl, incep, expir, server); err == nil {
|
||||
req.Answer = append(req.Answer, sigs...)
|
||||
}
|
||||
}
|
||||
for _, r := range rrSets(req.Ns) {
|
||||
signer := zones.Matches(r[0].Header().Name)
|
||||
if signer == "" {
|
||||
continue
|
||||
}
|
||||
ttl := r[0].Header().Ttl
|
||||
if sigs, err := d.sign(r, state.Zone, ttl, incep, expir, server); err == nil {
|
||||
if sigs, err := d.sign(r, signer, ttl, incep, expir, server); err == nil {
|
||||
req.Ns = append(req.Ns, sigs...)
|
||||
}
|
||||
}
|
||||
for _, r := range rrSets(req.Extra) {
|
||||
signer := zones.Matches(r[0].Header().Name)
|
||||
if signer == "" {
|
||||
continue
|
||||
}
|
||||
ttl := r[0].Header().Ttl
|
||||
if sigs, err := d.sign(r, state.Zone, ttl, incep, expir, server); err == nil {
|
||||
if sigs, err := d.sign(r, signer, ttl, incep, expir, server); err == nil {
|
||||
req.Extra = append(req.Extra, sigs...)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user