0

以下は単に機能しません:

Remove-DnsServerSigningKey -KeyId $key.KeyId -ZoneName $zonename -Force

$ zonenameが有効なゾーンであり、key-idが存在し、有効である場合。このコマンドは、最初にゾーンの署名を解除した場合に機能しますが、再署名の直後にこれを実行したいと思います。

論理:

  • 現在のすべてのゾーン署名キーを取得します
  • 新しいZSKを1つ追加します
  • 新しいZSKでゾーンを辞任する
  • 3秒間スリープします(猶予期間のみ)
  • 以前のすべてのキーをループします(この時点では、新しいキーはリストにありません)
    • 前のキーを削除する

以前のキーを削除しようとすると、次のようになります。

Remove-DnsServerSigningKey : Failed to delete the signing key __[Key-ID]__ for the zone __[Key-ID]__ on server __[Server-addr]__ Please check 
extended error for additional details.
At C:\Users\Administrator\Desktop\dnssec.ps1:79 char:13
+             Remove-DnsServerSigningKey -KeyId $key.KeyId -ZoneName $zonename -Fo ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (__[Key-Id]__:root/Microsoft/...erverSigningKey) [Remove-DnsServerSigningKey], CimException
    + FullyQualifiedErrorId : WIN32 9119,Remove-DnsServerSigningKey

コードは次のようになります。

function resign {
    param(
        [string]$zonename
    )
    $zonename + " <- Re-Signing"

    ## Grab all current keys (incl active ones)
    $keys = Get-DnsServerSigningKey -ZoneName $zonename

    $zonename + " <- Creating new ZSK"
    #Add a new ZSK 
    Add-DnsServerSigningKey -ZoneName $zonename -ComputerName 127.0.0.1 -CryptoAlgorithm RsaSha256 -Type ZoneSigningKey

    #Resign the zone with the newly added key 
    Invoke-DnsServerZonesign -ZoneName $zonename –DoResign -Force

    Start-Sleep -s 1

    # After the resign, we delete all previous ZONE signing keys (but keep KSK)
    $zonename + " <- Removing ZSKeys"
    foreach ($key in $keys) {
        if ($key.KeyType -eq "ZoneSigningKey") {
            Remove-DnsServerSigningKey -ComputerName 127.0.0.1 -ZoneName $zonename -KeyId $key.KeyId -Force
        }
    }
}

Notabelは、ゾーンの署名を完全に解除して同じdelete-keysコードを実行すると、機能する可能性があります。それが機能しないのは、ゾーンを辞任するときだけです。削除しようとしているキーは、KeySigningKey(確認済み)ではなく、ZoneSigningKeyタイプです。

4

1 に答える 1

0

つまり、署名されたゾーンを削除し、古いZSKを削除して古いKSKを保持し、新しいZSKを生成して、ゾーンに再度署名することで、これを解決しました。

基本的に私はunsignを呼び出し、resign内で再度署名します..それは醜く、意図した方法ではありません..しかしそれは機能します..

于 2013-02-06T10:29:58.917 に答える