VisualStudioのプログラムの発行エラー(証明書の署名期限切れ)について

問題

VisualStudioのソリューションエクスプローラーからプロジェクトを右クリック→発行で、以下のエラーが発生する。

エラー 2 SignTool はエラー 'bin\Release\XXXX.publish\\setup.exe の署名に失敗しました。 SignTool Error: ISignedCode::Sign returned error: 0x80880253
The signer's certificate is not valid for signing.
SignTool Error: An error occurred while attempting to sign: bin\Release\XXXX.publish\\setup.exe
' を報告しました。

原因

プログラムのClickOnesなどの発行時に以下のようなエラーが発生する原因は、証明書の期限が切れていること。
https://ameblo.jp/enhaunse/entry-10067285543.html

対策

期限を延長した証明書を作成してそれを利用するように変更する。

パターン1
プロジェクト→プロパティ→署名→ClickOnceマニフェストに署名する→テスト証明書の作成ボタンを押して、
新しいテスト証明書を作成する。

その後、発行を行うことでエラーが出ない。

ただし、この方法で発行すると既にインストール済みのプログラムを更新するときに
問題が発生する可能性がある。
(VisualStudio2008以降だと問題ない?)
パターン2
既存の証明書「XXX.pfx」をもとに期限を延ばした証明書を再作成する。

ClickOnceのデジタル証明書を更新するためのプログラムRenewCert.exeを作成
	以下URLをもとに作成する
	https://ameblo.jp/enhaunse/entry-10067285543.html
	上のサイトだと5年後までが期限になるがコードを修正することで何年後にすることでも可能。

RenewCert.exeで期限を延長さいた「XXX.pfx」ファイルを作成
	RenewCert.exe OLD.pfx NEW.pfx "CN=xxxxx"
	"CN=xxxxx"のxxxxxには、
	プロジェクト→プロパティ→署名→ClickOnceマニフェストに署名する→発行元
	……の文字列を指定する。

作成した証明書をプロジェクト以下のフォルダにコピー

プロジェクト→プロパティ→署名→ClickOnceマニフェストに署名する→ファイルから選択ボタンを押して、
作成した証明書を指定する。

その後、発行を行うことでエラーが出ない。