Open5

powershellスクリプトへの署名関連

あごしあごし

Windows powershellスクリプトへの署名を試みた際の覚書

あごしあごし

powershellスクリプトへの署名の仕方

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_signing?view=powershell-7.5
このサイトを見ながら進めれば出来る。以下2つの項に書いてあるコマンドを打つ。

  • 自己署名証明書の作成
  • スクリプトに署名する
あごしあごし

外部のPKIで発行した証明書で署名する方法

  • curlで証明書を引いてくる場合、curl.exeを指定する。
    今回はhashicorp vaultのPKIを利用しており、発行にcurl.exeコマンドを使った。curl(.exeなし)はInvoke-
    webRequestコマンドへエイリアスされているため、linuxのcurlと全然違う。curl.exeを使った方が良い。
  • jqコマンドをインストールしておく。
    vaultの証明書発行リクエストへの応答(証明書や秘密鍵の情報)はjsonで返ってくるので、jqを使えた方が良い。
  • pkcs形式へのコンバートのためopensslコマンドをインストールしておく。
    Windowsではpkcs(pfxファイル)で証明書を取り扱うため、vaultで発行した証明書や秘密鍵はそのまま使えない。pfxファイルにするためにopensslをインストールしておく。
    pfxファイル変換方法は以下サイトがシンプルhttps://www.slogical.co.jp/ssl/faq/make_pfx_with_openssl/?srsltid=AfmBOopMVDWNC4HpCqAnxF4F0v_XVl2RI3aDQCdq0hLWq5d1jkZaVQ4x
  • パッケージ管理ソフトをインストールしておく。
    前述までの通り、いくつかコマンドをインストールする必要があるので、chocolateyあたりでパッケージ管理した方が良い。
  • 証明書類の改行コードはLFにする。
    CRLFだと、pfxファイル変換でエラーが発生した。opensslだとWindowsだとしてもLFにしておく必要がある模様。
  • PKIでcodeSigningに対応している必要がある。
    対応していないとpfxファイルへ変換しても、署名に失敗する。
    extendedKeyUsage = codeSigning