2016年05月26日
自己証明書の作成
東京では、
(執筆中に開催されて投稿前日に終わりました)
MCPを取得したものの、お金の都合でお仕事をしている私です。
東京へは、まだ2度しか行ったことがありません...
1回目は修学旅行で東京証券取引所へ...
2回目は社員旅行で浅草とはとバス観光へ...
あぁ...「姫路IT系勉強会 in TOKYO」とか、無いかな~(ぇ
閑話休題。
Visual Studioでは、ClickOnceというプログラムの発行が可能です。
この、ClickOnceを利用するには電子証明書(コードサイニング証明書)が必要となります。
Visual Studioでも、テスト証明書(いわゆるオレオレ証明書)を簡単に発行することが可能ですが、
この証明書の有効期限は発行から1年間と短いため、途中で有効期限が切れる恐れがあります。
この証明書の有効期限は発行から1年間と短いため、途中で有効期限が切れる恐れがあります。
しかし、黒い画面で魔法の言葉(コマンド)を唱えることによって、
任意の設定をした自己証明書(有効期限を2100/01/01にするなど)を発行することが可能です。
任意の設定をした自己証明書(有効期限を2100/01/01にするなど)を発行することが可能です。
まずは、メニューから「Visual Studio xxxx」のフォルダ内にある「Developer Command Prompt for Visual Studio VSxxxx」または「VisualStudio 開発者コマンド プロンプト for VSxxxx」を実行します。
次に、cdコマンドで出力先のフォルダに移動します。
もし、これから作るのであれば、mkdirコマンドでフォルダを作成します。
- mkdir {フォルダを作成するパス}
- cd {移動先のパス}
なお、1つ目のmakecertを叩くと、Private Keyのパスワードの入力が2回求められます。
また、2つ目のpvk2pfxを叩くと、Windows 7では何も聞かれませんが、Windows 10では、
証明書のエクスポート ウィザードが立ち上がりました。
- makecert -n "CN={アプリ名など},O={会社名など},C=JP" -a sha256 -b {有効開始日 01/01/2000} -e {有効期限 01/01/2100} -eku 1.3.6.1.5.5.7.3.3 -cy end -r -sv {pvkファイル名} {cerファイル名}
- pvk2pfx -pvk {pvkファイル名} -pi {makecert実行時に入力したパスワード} -spc {cerファイル名} -pfx {pfxファイル名} -f
これで、カレントフォルダ(ここでは、C:\work)に、3つのファイルが出力されました。
次に、作成した証明書を信頼してもらうために、pfxファイルをダブルクリックで開きます。
どちらかを選んで、「次へ」をクリックします。
ファイル名に、ダブルクリックしたpfxファイルのパスが設定されていることを確認して、
「次へ」をクリックします。
パスワードを入力して、オプションは好みに合わせて選択します。
「次へ」をクリックします。
「証明書をすべて次のストアに配置する」を選択して、
「証明書ストアの選択」で「信頼されたルート証明機関」を選択します。
「次へ」をクリックします。
「完了」をクリックします。
「OK」をクリックして閉じれば、完了です。
ここで、cerファイルをダブルクリックで開いてみると、次のようになります。
発行先と発行者には、makecertで入力したCNの値が引用されています。
また、有効期限が「2000/01/01 から 2100/01/01」となっており、
有効期限切れの心配は、とりあえずなくなりました。
詳細をのぞいてみると、「拡張キー使用法」に「コード証明(1.3.6.1.5.5.7.3.3)」が
追加されています。
これは、makecertの-ekuで入力した証明書の目的で指定した内容です。
「証明のパス」を見ると、「証明書の状態」が「この証明書は問題ありません。」となっています。
しかし、先のpfxファイルを「信頼されたルート証明機関」にしなかった場合には、メッセージが異なります。
このように、先の「信頼されたルート証明機関」に未登録なので、
信頼できないよ!と言うわけです。
次に、作成したpfxファイルをVisual Studioの署名に使用してみたいと思います。
プロジェクトを開き、プロパティの「署名」を開きます。
次に、「ファイルから選択」をクリックして、pfxファイルを選択します。
pfxファイルのPrivate Keyパスワードを聞いてきますので、入力します。
証明書の欄が更新されて、作成した証明書が正しく設定されていることが確認できます。
あとは、「公開」からClickOnceを発行すれば完了です。
ただし、すでにクライアント側でインストールされており、発行に伴うアップデートが実行された場合には、
自動アップデートの際にインストールの確認メッセージが表示されますが、
「インストール」を選択することで、アップデートが完了します。
以上で、Visual Studioの署名設定は完了です。
最後に、この証明書は自己証明書のため、インストール時に第三者機関による
発行元の確認ができないなど、外部の企業や不特定多数の人への配布には好ましくありません。
発行元の確認ができないなど、外部の企業や不特定多数の人への配布には好ましくありません。
(年々、自己証明書による発行元の確認ができないプログラムのインストール、
実行時の警告や制限が厳しくなっています。)
実行時の警告や制限が厳しくなっています。)
そのため、大規模な案件等でClickOnceによる発行を行う際には、
コードサイニング証明書の購入することを検討したほうがよさそうです。
Ref. 証明書を作成する
Ref. コードサイニング証明書とは