SSL証明書(サーバID)の作成と導入の仕方(Windows編1)
オレオレ証明書の作成と導入のメモ。他の人の資料として使うので少しだけ丁寧に記す。
とは言ってもWindowsであれば「SSL に使用する証明書の構成」あたりに載ってるけれど。
証明書を作っている環境はWindows XP SP3+VS2005 Pro、管理者権限あり。IISは5.1。
- ホスト名を決める。
- クライアントからアクセスするときのURLの「https://xxx.yyy.zzz/aaa/bbb」の「xxx.yyy.zzz」のこと。ここでは仮に「www.example.com」とする。
- 証明書を作成する環境で以下のコマンドを実行する。
- コマンドが成功すると「Succeeded」とだけ表示され、証明書はマシンの証明書ストアに格納される。
- ここでは有効期限を"9999/01/01"(コマンドライン上はmm/dd/yyyy表記)にしてあるので、適当に変更すること。セキュリティ上は短めがベター。
- 環境によってはmakecertの場所が「%PROGRAMFILES%\Microsoft.NET\SDK\v2.0\Bin\makecert」になっていることがあるかも。
- オプションの意味は「証明書作成ツール (Makecert.exe)」参照。
"%PROGRAMFILES%\Microsoft Visual Studio 8\SDK\v2.0\Bin\makecert" -r -pe -n "CN=www.example.com" -e 01/01/9999 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
ここまでで証明書が(証明書を生成した環境の)証明書ストアに格納されるが、サーバ機にキーペアを導入したりクライアントに証明書を信頼させたりする必要があるので、以下の手順でキーペア/証明書を取り出す。
- [スタート]-[ファイル名を指定して実行]で「mmc」と入力して実行。
- [ファイル]-[スナップインの追加と削除]を選択。
- [スタンドアロン]タブの[追加]ボタンをクリック。
- [証明書](一番下の方にある)を選択して[追加]ボタンをクリック。
- [コンピュータアカウント]を選択して[次へ]ボタンをクリック。
- [ローカルコンピュータ]を選択して[完了]ボタンをクリック。
- [スタンドアロン スナップインの追加]ダイアログを「閉じる」ボタンで閉じる。
- [スナップインの追加と削除]ダイアログを「OK」ボタンで閉じる。
- サーバ機に導入するキーペア(.pfx)の取得
- [コンソールルート]-[証明書(ローカルコンピュータ)]-[個人]-[証明書]を選択。
- 右側の一覧にさきほど作った証明書(この例では「www.example.com」)が表示されているので、その上で右クリック-[すべてのタスク]-[エクスポート]を選択。
- ウィザードが開いたら[次へ]ボタンをクリック。
- 秘密キーのエクスポートについて聞かれたら[はい、秘密キーをエクスポートします]を選択して[次へ]ボタンをクリック。
- この選択によりキーペアを取り出すことになる。
- 以下を選択して[次へ]ボタンをクリック。
- [Personal Information Exchange - PKCS #12 (.PFX)]
- [証明書のパスにある証明書を可能であればすべて含む](自己証明だから無意味かも)
- [強力な保護を有効にする]
- [Personal Information Exchange - PKCS #12 (.PFX)]
- 素敵なパスワードを2回入力して[次へ]ボタンをクリック。
- エクスポート先のファイル名を入力して[次へ]ボタンをクリック。
- ファイル名は何でもよいが拡張子は「.pfx」が吉。この例では「www.example.com.pfx」。
- 絶対パスで記すのが吉。
- [完了]ボタンをクリックすると、指定したファイル名でサーバ機に導入するキーペアを取得できる。
- クライアントに信頼させるための証明書の取得
- [コンソールルート]-[証明書(ローカルコンピュータ)]-[個人]-[証明書]を選択。
- 右側の一覧にさきほど作った証明書(この例では「www.example.com」)が表示されているので、その上で右クリック-[すべてのタスク]-[エクスポート]を選択。
- ウィザードが開いたら[次へ]ボタンをクリック。
- 秘密キーのエクスポートについて聞かれたら[いいえ、秘密キーをエクスポートしません]を選択して[次へ]ボタンをクリック。
- この選択により秘密鍵を含まない証明書のみを取り出すことになる。
- 以下を選択して[次へ]ボタンをクリック。
- [DER encoded binary X.509 (.CER)]
- エクスポート先のファイル名を入力して[次へ]ボタンをクリック。
- ファイル名は何でもよいが拡張子は「.cer」が吉。この例では「www.example.com.cer」。
- 絶対パスで記すのが吉。
- [完了]ボタンをクリックすると、指定したファイル名でクライアントに信頼してもらう証明書を取得できる。
- 作業用の証明書の後始末。
- [コンソールルート]-[証明書(ローカルコンピュータ)]-[個人]-[証明書]を選択。
- 右側の一覧にさきほど作った証明書(この例では「www.example.com」)が表示されているので、その上で右クリック-[削除]を選択。
- これでmakecertで証明書ストアに格納された証明書が削除される。これにより証明書として残っているものは上記で取得した.pfxと.cerのみになる。.pfxがあってパスワードを覚えていればそれを元に上記の作業を再度実施することが可能(cerも再エクスポート可能)なので、この2つは秘密の場所に大事にしまっておくこと。
- .pfxや.cerを受け渡す際は信頼できるルートを使うこと。共有フォルダに放置していてはいけない。
- .cerは出来立ての時点でフィンガープリントをメモしておくこと。同じファイル名の別の証明書をクライアントに信頼させてしまわないように注意。
このあと、取得したキーペアや証明書をサーバやクライアントに導入する手順やコードサイニングの手順も書こうと思ったけれど、疲れたので今回はここまで。実際の作業はすぐに終わるけれど、書き出すと面倒だな。