HTTPS を使うためのサーバー証明書を取得した

あれから 1 年以上経ってようやく重い腰を上げた。

何かと言うと、表題の通りサーバー証明書を取得して Web サイトを HTTPS に対応させるためだ。
当ブログ程度の内容ならわざわざ HTTPS 対応なんて手間をかけるほどでもないのだが、別の (非公開の) サイトのアクセス制限にクライアント認証を使うことにしたついでだったりする。

HTTPS に必要なサーバー証明書は StartSSL で取得したので、ここにそのときの手順を控えておく。

アーミーナイフ

前準備

StartSSL でサーバー証明書を取得するには、まず最初にユーザー登録が必要だ。
ユーザー登録の方法については以前の記事で紹介しているので、ここでは省略する。

なお、StartSSL へのユーザー登録は、自身のメール アドレスでの個人証明書の取得でもある。

取得した個人証明書をインストール/インポートした Web ブラウザで StartSSL の Web サイト にアクセスし、Web ページの右上にある「Control Panel」ボタンをクリックする。

右上の「Control Panel」をクリックする
「Authenticate」をクリックする

「Authenticate or Sign-up?」のページで「Authenticate」をクリックする。
「Windows セキュリティ」ダイアログが表示されたら自分のメール アドレスの個人証明書を選んで「OK」ボタンをクリックすると、StartSSL のコントロール パネルにログインする。

自分のメール アドレスの個人証明書を選ぶ

ドメインの所有の検証

StartSSL のコントロール パネルにログインしたら、まず最初に取得したいサーバー証明書のサーバー、つまり HTTPS 対応する Web サイトをホストするサーバーが属するドメインの所有を検証する。

「Validations Wizard」をクリックする

コントロールパネルの左側にある三つのタブの三番目「Validations Wizard」をクリックする。

「Select Validation」ページが表示されるので、「Type」欄で「Domain Name Validation」を選び「Continue»»」をクリックする。

「Domain Name validation」を選ぶ

次の「Enter Domain Name」ページでは、Web サイトをホストするサーバーのドメイン名の部分を入力して「Continue»»」をクリックする。

ドメイン名を入力する

この「Enter Domain Name」ページのドメイン入力欄の二つ目 (右側) は gTLD や ccTLD とその下のレベルのドメインなど、固定的に決められているドメインを選択するようになっている。
なお、ここで入力するのは、サーバーの FQDN でなく、ドメイン レジストラ等で登録したドメイン名だ。
サーバーの FQDN はこの後のサーバー証明書の発行のときに入力する。

ドメイン名を入力して「Continue»»」をクリックすると、「select Verification Email」ページが表示される。

Validation Code が届くメール アドレスを選ぶ

ここには先ほど入力したドメインの postmaster や hostmaster、webmaster のメール アドレスが一覧表示されている。
筆者の場合はなにやら文字化けしたようなものまで一緒に表示されていたが、何かの間違いだろう。

ここに一覧されているメール アドレスから適切なものを選んで「Continue»»」をクリックする。
選択したメール アドレス宛に Validation Code が送られてくるので、実際にメールが届くアドレスを選ばなくてはならない。
また、ここで選んだメール アドレスが後に発行するサーバー証明書にも記載される。
筆者はここで「postmaster@compnet.jp」を選んだので、サーバー証明書にも「postmastster@compnet.jp」と記載されている。

メール アドレスを選んで「Continue»»」をクリックすると、「Complete Validation」ページが表示される。

Validation Code メールが届くのを待つ

このページは Validation Code のメールが届くまで閉じずにこのままにする。
間違って閉じてしまうと、Validations Wizard を最初からやり直す羽目になる。

一覧から選んだメールアドレスに「Your Authentication Code, …」といった件名のメールが届いているはずだ。

E-メールで届いた Validation Code を控える

このメールの本文の「Your verification code …」に続く英数字の文字列を、開いたままにしてある「Complete Validation」ページの「Verification Code」欄に入力して「Continue»»」をクリックする。

Validation Code を入力する
「Finish」をクリックしてドメインの所有の検証を終える

「Validation Success」ページが表示されれば、ドメインの所有が検証され、このドメインに属するサーバーのサーバー証明書が発行できるようになる。
最後に「Validation Success」ページの「Finish»»」ボタンをクリックして、コントロール パネルのトップ ページに戻っておく。

サーバー証明書の発行

サーバーが所属するドメインの所有の検証ができたら、いよいよサーバー証明書を発行する。

「Certificates Wizard」をクリックする

コントロールパネルの左側にある三つのタブの二番目「Certificates Wizard」をクリックする。

「Select Certificate Purpose」ページが表示されるので、「Certificate Target」欄で「Web Server SSL/TLS Certificate」を選び「Continue»»」をクリックする。

「Web Service SSL/TLS Certificate」を選ぶ

次の「Generate Private Key」ページで、「Key Password」欄と「Confirm Password」欄の両方に、10 文字以上で 32 文字以下の英数字 (記号が使えるかどうかは不明) の同じパスワードを作って入力する。
このパスワードは後で必要になるので、必ず控えておく。

作成する秘密鍵のパスワードと鍵長、ハッシュ長を決める

「KeySize」欄は「2048 (Medium)」か「4096 (High)」のどちらかを選択するのだが、「4096 (High)」にすると次のステップに進むまでにかなりの時間が掛かる (筆者の場合は数十分待っても先に進まなかったので途中で諦めた。)
「Secure Hash Algorithm」欄は「SHA1 (Default)」と「SHA2 (Advanced)」のどちらかを選択する。
「Key Password」欄、「Confirm Password」欄、「KeySize」欄、「Secure Hash Algorithm」欄を全て入力したら「Continue»»」をクリックする。

「OK」ボタンを押す

「Web ページからのメッセージ」ダイアログが表示されたら「OK」ボタンをクリックする。
なお、このダイアログには「CSR (証明書署名要求) がすでに作成されているならこれを継続せず SKIP しなさい」と書いてある。

しばらくすると「Save Private Key」ページが表示される。

作成された秘密鍵を控えて保存する

この「Save Private Key」ページの、テキストボックス内に表示されている「-----BIGIN RSA PRIVATE KEY-----」から始まる文字列が、発行するサーバー証明書の秘密鍵だ。
Web サイトを HTTPS に対応させるには、この秘密鍵とこれに続いて発行するサーバー証明書を使う。
このためテキストボックス内の文字列をすべてコピーして、どこか自分のローカル フォルダーにファイルを作って保存する。
筆者は、Web サイトをホストするサーバーの ~/cert ディレクトリを作り compnet.key というファイル名で保存した。
この秘密鍵は、先ほどの「Generate Private Key」ページで入力したパスワードで保護されており、このままでは少々使いにくいので、後ほどパスワードを解除する予定だ。

テキストボックス内の「-----BIGIN RSA PRIVATE KEY-----」から始まる文字列を保存したら「Continue»»」をクリックする。

次の「Add Domains」ページでは、発行したいサーバー証明書のドメイン名の部分を選択して「Continue»»」をクリックする。

サーバー証明書のサーバーが属するドメインを選択する

予めドメインの所有を検証してあれば、この「Domain」欄で目的のドメイン名が選択できる。

次も「Add Domains」ページだが、こんどは Web サイトをホストするサーバーの FQDN を入力して「Continue»»」をクリックする。
すると「Ready Processing Certificate」ページが表示される。

サーバー証明書のサーバーの FQDN を入力する
ドメイン名を確認する

「Ready Processing Certificate」ページの中程に、予め所有を検証したドメイン名と今しがた入力した FQDN の二つが表示されているのを確認したら、「Continue»»」をクリックする。

サーバー証明書の作成にも少々時間が掛かるが、しばらく待つと「Save Certificate」ページが表示される。

作成されたサーバー証明書を控えて保存する

この「Save Certificate」ページの、テキストボックス内に表示されている「-----BIGIN CERTIFICATE-----」から始まる文字列が、発行するサーバー証明書だ。
Web サイトを HTTPS に対応させるには、このサーバー証明書と先ほど保存した秘密鍵を使う。
このためテキストボックス内の文字列をすべてコピーして、どこか自分 のローカル フォルダーにファイルを作って保存する。
筆者は、Web サイトをホストするサーバーに ~/cert ディレクトリを作り compnet.pem というファイル名で保存した。

テキストボックス内の「-----BIGIN CERTIFICATE-----」から始まる文字列を保存したら「Finesh»»」をクリックする。

以上で、サーバー証明書が発行できた。
後は Web サイトをホストしているサーバー上での作業になる。

秘密鍵のパスワードを解除

ここまでで、Web サイトを HTTPS にするために必要なサーバー証明書を StartSSL で発行し、Web サイトをホストするサーバーに保存した。
~/ssl/compnet.key ファイルが秘密鍵であり、~/ssl/compnet.pem がサーバー証明書の本体だ。
この後は、この二つのファイルを使って Web サイトを HTTPS 対応にしていくことになる。

しかし、秘密鍵がパスワードで保護されているままだと、Web サーバーの起動時に毎回パスワードを入力しなくてはならず、運用の手間が大きくなってしまう。
StartSSL でサーバー証明書を発行する際に作成、保存した秘密鍵はパスワードで保護されているので、まずはこれを解除しておく。

秘密鍵を保存したサーバー (Web サーバーをホストしているサーバー) の OS は ubuntu 12.04 なので、以下のように openssl コマンドを使って秘密鍵のパスワードを解除する。

このコマンドを実行するとパスワードを要求されるので、StartSSL の「Generate Private Key」ページで指定したパスワードを入力すると、パスワードが解除される。

パスワードで保護された秘密鍵を使う予定がないので -in-out の両方の引数に同じファイル名を指定しているが、パスワードで保護された秘密鍵を残しておきたいなら –out に指定するファイル名を変えてもいい。

発行した証明書の確認

Web サーバーに電子証明書を登録して HTTPS に対応させるのは次の記事に書くことにして、発行したサーバー証明書の中身を確認しておく。

サーバー証明書の中身を確認するには以下のコマンドを実行する。

コマンド実行結果の 8 行目と 9 行目にこの証明書の有効期間がある。
これによるとこの証明書の有効期間は、2014 年  4 月 17 日から 2015 年  4 月 18 日までのほぼ一年間だと分かる。
これは、来年の 4 月 18 日が近づいたら、新しいサーバー証明書を発行して Web サーバーに設定し直さないければいけないということを意味するが、無料で入手できるサーバー証明書なのでこのくらいの手間は仕方ないだろう。

また、10 行目には CN=www.compnet.jp/emailAddress=postmaster@compnet.jp と、この Web サイトの FQDN とメール アドレスが記述されている。
この Web サイトのドメインの所有を検証したときに選択したメール アドレスだ。

サーバー証明書と秘密鍵の組み合わせを確認するには、以下のコマンドを実行する。

組み合わせが合っているなら、コマンドを実行しても何も出力されない。しかし、もし組み合わせが間違っているときは、以下のような結果が出力されるだろう。

関連記事

  • HTTPS を使うための電子証明書取得の前準備 (StartSSL へのユーザー登録)2013.1.17 (木) HTTPS を使うための電子証明書取得の前準備 (StartSSL へのユーザー登録) 無料の電子証明書を発行してくれることで有名な StartSSL で電子証明書を取得してみる。 とはいっても、無料で取得できるのは所有者の電子メールの正当性だけしか保証されないクラス 1 の証明書だけだ。 また、有効期限は 1 […]
  • StartSSL で発行した証明書を更新2013.12.29 (日) StartSSL で発行した証明書を更新 StartSSL から電子証明書を更新しろというメールが届いた。 以前に StartSSL で発行した電子証明書を確認すると、確かに有効期限まで後 2 週間ほどになっている。 この電子証明書は、「HTTPS を使うための電子証明書取得の前準備 […]
  • StartSSL からインストールされた個人証明書をバックアップ (IE10)2013.1.24 (木) StartSSL からインストールされた個人証明書をバックアップ (IE10) Web サイトを HTTPS 対応にするための電子証明書を発行するつもりで、前の記事で StartSSL にユーザー登録したことを書いた。 StartSSLへのユーザー登録の途中で、使用している Web ブラウザーに自分のメール […]
  • StartSSL からインストールされた個人証明書をバックアップ (Firefox)2013.1.28 (月) StartSSL からインストールされた個人証明書をバックアップ (Firefox) Web サイトを HTTPS 対応にするための電子証明書を発行するつもりで、前の記事で StartSSL にユーザー登録したことを書いた。 StartSSLへのユーザー登録の途中で、使用している Web ブラウザーに自分のメール […]

コメントを残す