single.php

rdpsign ツールでデジタル署名が成功したのに使えない理由

Windowsの更新で、デジタル署名が無いRDPファイルでリモートデスクトップ接続した場合に接続画面に警告が表示されるようになりました。対策としてrdpsignツールで署名をした際に、署名が成功しているのに使えないケースがあったので備忘録的に投稿しておきます。

通常の署名とは異なる

リモートデスクトップ接続を行う場合に利用できるRDPファイル(拡張子.rdp)はメモ帳などで開くと分かりますが、テキストファイルです。

なのでコードサイニングなどで利用する署名ツールは使えません。なので[rdpsign]を使うことになります。

通常は、こんな感じで署名ができます。

rdpsign /sha1 XXX... "C:\rdp\machine_name.rdp"

XXXの部分は、証明書マネージャーなどの画面で表示される有効な証明書の[拇印]を指定します。

SHA1証明書は使えない

例えば、次のコマンドでSHA1で作成された証明書の拇印を指定して署名を実行します

rdpsign /sha1 XXX... "C:\rdp\machine_name.rdp"

実行すると、次のような表示になります。

証明書を指定するには、ハッシュまたは pfx ファイルを指定する必要があります。
名前

rdpsign [オプション] [署名する項目]

オプション

  /sha256 HASH
       署名証明書の SHA256 ハッシュを指定します。
  /q
       Quiet モード:  成功時には出力なし、失敗時には最小限の出力を返します。
  /v
       詳細モード: 警告、メッセージ、状態をすべて表示します。
  /l
       署名をテストし、実際に入力内容を置換することなく、結果を出力します。入力ファイルが stdin に存在する場合は無視します。


すべての rdp ファイルが正常に署名されました。

最後の行に[すべての rdp ファイルが正常に署名されました。]の記載があるので成功した気になります。

実行後にファイルの[プロパティ]などで更新日時を確認すると日付が更新されていない場合には成功していません。(私は、これに気が付くまで時間がかかりました)

次の[SHA256]オプションでコマンドを実行すると

rdpsign /sha256 YYY... "C:\rdp\machine_name.rdp"

次の表示になります。(おそらく、これが正しい実行結果です)

すべての rdp ファイルが正常に署名されました。

実行後にファイルの[プロパティ]などで更新日時を確認するとコマンドを実行した日付で更新されます。

つまり[SHA1]オプションで実行してもエラーになっているという結果です。

まとめ

今回は短い記事ですが、rdpsignツールで署名をした際に、署名が成功しているのに使えないケースがあったので原因について書きました。

結論としては[SHA1]オプションで拇印を指定して署名を実行した場合、表示には “正常に署名されました” がありますが、ファイルは更新されない場合があります。

実際に署名されるとファイルの更新日時が実行時の日時に変わるので確認できます。

rdpsignコマンドで署名を実行しているのに使えない人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です