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ć.