Open5
powershellスクリプトへの署名関連
Windows powershellスクリプトへの署名を試みた際の覚書
powershellスクリプトへの署名の仕方
このサイトを見ながら進めれば出来る。以下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
以下のサイトがhashicorp vaultでcode signing caを建てるのに参考になると思う。
やってみたら記事に纏めてみようと思う。