3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows Terminal とScriptの署名

Last updated at Posted at 2020-03-15

Windows10を開発マシンとして使うための初期設定

  • 今後dockerとか使って開発を進めることになるので、Windows 10 Homeだった物をライセンス購入してProにしました。→再起動が1回かかるくらいで項目がリセットされるとか無かった
    • Windows 10 Proへのアップグレード方法→Windows StoreでWindows 10 Proを検索
    • 価格:¥12,568 (2020/3/15現在)
  • プレビュー版のWindowsTerminalをインストール:こちらもMicroSoftStoreからインストール

1. プロンプト(PowerShell や Windows Terminal)を開いたときにスクリプトを実行出来るようにする

デフォルトだと、スクリプト実行が制限されています。
といいながらも、起動時にPowerShellの初期実行スクリプト Microsft.PowerShell_profifle.ps1を読み込もうとしているので怒られる訳なのです。。

PowerShellスクリプトが実行出来てしまうと、悪意のあるスクリプトを実行すると、知らないうちにシステムの設定が変更されてしまう可能性があるので、「署名付きスクリプトを実行可能」にして、上のプロフィールスクリプトに署名をすることにしました

まずは、スクリプト実行のポリシーを変更する。
以下のコマンドを管理者権限で実行したPowerShellプロンプトで実行する

Set-ExecutionPolicy AllSigned

2. PowerShellに署名ができる様に、自己署名ルート証明書を作成し、ルート証明書に移動するる

PowerShellを起動させたときに、これを出ない様にする

image.png

  1. スクリプトの実行権限を「署名付き(AllSinged)」に設定する
  2. 自己署名ルート証明書を作成する
  3. Microsft.PowerShell_profifle.ps1 に署名する

公式っぽいドキュメント:

ここより、自己署名ルート証明書の作成(いわゆるオレオレ証明書)

この通りやって署名しようとしたらはじかれたので、New-SelfSignedCertificateコマンド、スクリプト署名で検索した結果、こちらのページを参考にしました!

  1. Powershellプロンプトを管理者権限で起動する
  2. 以下のコマンドを実行する:Typeが大事なんですね
    • $cert = New-SelfSignedCertificate -Subject "CN=CodeSigningForPS"` -KeyAlgorithm RSA -KeyLength 2048 -Type CodeSigningCert ` -CertStoreLocation "Cert:\CurrentUser\My"
  3. 生成した証明書をルート証明書に移動する
    • $Cert = Get-ChildItem Cert:\CurrentUser\My | ? {$_.Subject -eq "CN=CodeSigningForPS"}
    • Move-Item "Cert:\CurrentUser\My\$($Cert.Thumbprint)" Cert:\CurrentUser\Root
  4. スクリプトを署名する
    • Set-AuthenticodeSignature -Cert $Cert -Filepath.\Microsoft.PowerShell_profile.ps1
  5. すると次のメッセージダイアログが表示されました
    • image.png
  6. ダイアログに「はい」と答えて、shellプロンプトを起動すると..
    • image.png
  7. これを「常に実行する」としました

新しいスクリプトを実行させるには。。

試しに起動時スクリプトを変更してみると。。

image.png

エラーになります。

改めて以下で署名しました

$Cert = Get-ChildItem Cert:\CurrentUser\Root | ? {$_.Subject -eq "CN=CodeSigningForPS"}
Set-AuthenticodeSignature -Cert $Cert -Filepath {ファイルへのパス}

3. 証明書の削除方法

certmgr.mscを起動する

image.png

証明書 > 信頼されたルート証明機関 > 証明書
で見つけることが出来るので、何かあったらここから削除すると安全かも

image.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?