Podpisywanie strefy

Przygotowanie pliku

ods-enforcer korzysta z narzędzia ldns-read-zone do wczytania pliku strefy do podpisania. ldns-read-zone radzi sobie z uproszczoną składnią (czyli definicja $TTL, oraz uproszczone wpisy bez jawnego TTL - por. [ 8 ]), natomiast nie radzi sobie z parametrem $include. Rozwiązaniem problemu jest wykorzystanie narzędzia dig1:

dig axfr cdnx.pl @localhost > /usr/lcoal/etc/nsd/master/raw/cdnx.pl.raw

W konfiguracji NSD musi być dopuszczenie do AXFR z poziomu localhost (np. we definicji wzorca).

Skrypt pomocniczy

W celu rozwiązania problemu jest w repozytorium konfiguracji skrypt pomocniczy, który przygotowuje plik do podpisania. Użycie jest proste i przyspiesza przygotowanie konfiguracji do podpisywania.

cx.ldns-read-zone -f cdnx.pl.cf -t /usr/local/etc/nsd/master/raw/cdnx.pl.raw

Dodanie domeny do ODS

ods-enforcer zone add --zone cdnx.pl --input /usr/local/etc/nsd/master/raw/pl/cdnx.pl.raw --output /usr/local/var/opendnssec/signed/pl/cdnx.pl.signed

Wyświetlenie kluczy

(!) Opcja -v jest potrzebna, aby poznać id klucza KSK. Można to też pominąć i po wklejeniu klucza w panelu rejestratora zostanie pokazany komunikat o właściwym (oczekiwanym) numerze klucza.

ods-enforcer key list -v --zone cdnx.pl

Wygenerowanie kluczy DS dla rejestratora

Po wygenerowaniu kluczy (co można sprawdzić w logach) można wygenerować rekordy DS dla rejestratora:

# wersja DIGEST
ods-enforcer key export --zone cdnx.pl --ds --keystate publish --keytype ksk
ods-enforcer key export --zone cdnx.pl --ds --keystate ready --keytype zsk

# wersja z pełnym kluczem SHA-1 (wymagane przez OVH)
ods-enforcer key export --zone cdnx.pl -s --keystate publish --keytype ksk
ods-enforcer key export --zone cdnx.pl -s --keystate ready --keytype zsk

(!) W przypadku eksportu rekordów DS jest bardzo ważne, aby podać "status" oraz "typ" klucza (parametry --keystate oraz --keytype muszą być podane jednocześnie (por. [ 10 ]).

(!) Strefa została podpisana, klucze zostały opublikowane u rejestratora. Ale w międzyczasie zostały zmienione serwery nazw (zmodyfikowane również wpisy w whois). Z jakiegoś powodu łańcuch podpisania został zerwany. Wylistowanie kluczy --keystate publish zwraca pustą listę (klucze formalnie są aktywne). Koniec końców konieczne było usunięcie kluczy DS z poziomu rejestratora i dodanie ich na nowo. Wszystko zaczęło się zgadzać.