Visual Studioで以下のエラーが発生しました。
「信頼性の高い発行元からのプロジェクトのみを開くようにしてください。」
この解決方法として、コード証明書を使った署名方法をまとめました。
コード証明書とSSL証明書 (https) は違うことに注意してください。
目次
信頼性の高い発行元からのプロジェクトのみを開くようにしてください
Visual Studioで他人からソリューションファイルを送ってもらって、プロジェクトを開こうとしたら以下のメッセージが表示されました。
信頼性の高い発行元からのプロジェクトのみを開くようにしてください。
プロジェクトファイル xxxx は、完全に信頼された発行元からのファイルではない可能性がありま
す。Microsoft Visual Studioで開いて、カスタムビルドステップを実行すると、セキュリティ上の危険を引き
起こすおそれがあります。このプロジェクトが信頼されない発行元から提供されている場合、お使いのコンピュ
ーターが破損したり、個人情報が侵害されたりする原因になることがあります。
ちょっとドッキリしますね。
ただ、信頼できる相手からのプロジェクトファイルなら、このまま開いて問題ありません。
一度、ソリューションファイルを開くと、.suoというソリューションユーザーオプションファイルが上書きされるために、二度とこのエラーは表示されません。
ただ、ネット上に誰でもダウンロードできるVisual Studioのソリューションファイルを開いたときに、このメッセージが表示された場合、安易にソリューションファイルを開かない方がよいでしょう。
コード証明書(Code Signing Certificates)の購入: 信頼性の高い発行元となる
そもそも「信頼性の高い発行元」というエラーを出さないようにするためには、プロジェクトにコード証明書を入れておく必要があります。
コード証明書の入手先として、シマンテック・ベリサインなどが有名ですが、基本的にどこから購入しても問題ありません。
また、
コード証明書とSSLの証明書は違うものなので、購入するときに間違えないように注意しましょう。
コード証明書はVisual Studioのプロジェクトファイルや実行プログラム (exe) に適用します。
一方、SSL証明書は、ApaheやnginxなどのWEBサーバーで設定します。
SSL証明書を設定すると、https:// でエラーなく表示されるようになります。
以下は、シマンテック・ベリサインのWEBサイトの例です。
Code Signing Certificates for Microsoft Authenticode を選択して購入します。
ちなみに、シマンテック・ベリサインのコード証明書の価格は他社と比べて少し高いです。
1年間で9万円で毎年、更新が必要になります。
そこで、比較的安めのコード証明書を日本語で売っているところを探してみました。
株式会社コモドジャパン
ここなら、1年間で21,000円です。
ちなみに、個人的な感想ですが、コード証明書にしろSSLの証明書にしろ、どこで買っても大した差はありません。
価格の違いは、単にブランド力の違いです。
誤解を恐れずに例えれば、ある目的地に行くのに、ベンツで行くか、軽自動車で行くかの違いぐらいです(まぁこの場合、乗り心地が違うとかいろいろと他にも違いがあるので、よい例えになっていないかもしれません)。
コード証明書で署名したファイルのプロパティを敢えて開いてみて、ベリサインで署名されていると少し気持ちいいかな、ぐらいです。
あるいは、客先が署名を見てちょっと安心することがあるぐらいです。
説明がちょっとわかりにくかったですが、コード証明書を購入する際に購入先、価格に悩んだら、ほんのちょっとだけ、この意見を参考にしてください。
どこで買うかは本人次第です。
コード証明書を使って署名する方法
Visual Studioでコード証明書で署名するには、Visual Studioでプロジェクトを選択し、
マウスの右クリック⇒プロパティ
を開きます。
「署名」を選択し、「アセンブリに署名する(A)」にチェックを入れて、キーファイルを選択します。
SignToolでexeファイルやdllに署名
Visual Studioのプロジェクト以外に実行ファイルなどに署名をすることも出来ます。
この場合、Visual Studioに付属のSignTool.exeというコマンドを使います。
Visual Studioのコマンドプロンプトを開いて、コマンドラインから
「SignTool」を実行するとSignToolが起動します。
1 2 3 4 5 6 7 8 9 10 11 |
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin>signtool SignTool Error: A required parameter is missing. Usage: signtool <command> [options] Valid commands: sign -- Sign files using an embedded signature. timestamp -- Timestamp previously-signed files. verify -- Verify embedded or catalog signatures. catdb -- Modify a catalog database. For help on a specific command, enter "signtool <command> /?" |
SignToolの使い方については、以下に詳しく記載されていました。
SignToolはコマンドラインでしか使えないようです。
以前は、
$ signtool signwizard
とするとGUIが起動したのですが、新しいVisual Studio 2012ではなくなっているようです。
SignTool Error: Invalid command: signwizard
と表示されました。
signtool.exe を使って、直接pfxファイルを指定して署名する場合は /f と /p オプションを使用します。
具体的には次の通りです。
1 |
signtool.exe sign /f <pfx証明書ファイル名> /p <pfx証明書パスワード> /v <署名するファイル> |
Visual Studio .NETのソリューションファイルの種類と拡張子
ソリューションファイルには、.slnと.suoという二つのファイルがあります。
これらのファイルの意味は以下の通りです。
拡張子 | 名前 | 説明 |
---|---|---|
.sln |
Visual Studio ソリューション |
プロジェクト、プロジェクト アイテム、およびソリューション アイテムをソリューションとしてまとめるため、ディスク上の各アイテムの場所への参照を開発環境に提供します。 |
.suo |
ソリューション ユーザー オプション |
ソリューションに関連付けられたオプションをすべて記録し、ソリューションを開くたびにカスタマイズ情報が組み込まれるようにします。 |
からの引用です。
.suo のファイルは、ユーザーオプションであるために配布する際に削除して構いません。
更に細かく言うと、配布時には、.aps、.dep、.idb、.ilk、.ncb、.obj、.pch、.pdb、.res、.suo、.user、BuildLog.htmといったファイルは削除して構いません。
プログラミングの無料レッスン体験
約8,000名の受講生と80社以上の導入実績のあるプログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp
<Codecampの特徴>
1 現役エンジニアによる指導
2オンラインでのマンツーマン形式の講義
3大手企業にも導入されている実践的なカリキュラム
↓無料体験レッスン実施中です。
コメント