[さくらのSSL]nginxにRapidSSLの証明書をインストールした


2015/07/30 よりさくらのSSL ラピッドSSL提供開始記念キャンペーンが始まったのですが、あまりの安さに飛びついてみました。今なら(2015/09/30まで)RapidSSLの証明書が1年ぶん0円なので、さくらのVPSにあるぼくの仕事用サイト ( http://ll4u.in ) のドメインで3年ぶん申し込んでインストールするまでの作業手順を書いておきます。

■ 環境

■ 前提条件

ドメイン認証SSLなので、SSLでアクセスさせたいホストのドメインを取得済みであることは勿論のこと、 admin@ドメイン名 宛に外部から送られるメールが受信可能であること、 httpでも構わないのでWEBサイトが公開されていること、ドキュメントルートにhtmlファイルをアップロード可能なことが条件となります。これは、ジオトラストのhttpクライアントが自動でドメインの存在確認を行うためです。なので、ベーシック認証がかかっていたりIPアドレス制限がかかっていたりするとスムーズに認証されない可能性があります。

■ 秘密鍵作成

秘密鍵、CSR、証明書を置くディレクトリを先に作成しておきます。

次に、秘密鍵の鍵長を2048bitで作成します。

秘密鍵が2048bitで作成されていることを確認します。

■ CSR作成

公式yumリポジトリ(のmainline)からインストールしたnginxはSNIが有効化されているので、今後ほかのバーチャルホストのSSL証明書をインストールする際にも応用がきくよう、ディスティングイッシュネームを変数にして一撃でCSRを生成しています。

CSRができたら中身を確認してみましょう。

こんな感じでSubjectの行に想定通りのディスティングイッシュネームが入っていればOKです。

■ さくらのSSL お申し込み

RapidSSL 1年ぶん0円キャンペーンが適用されるには、以下のサービスのうちいずれかを利用中であることが条件となります。

  • レンタルサーバサービス
  • VPSサービス
  • 専用サーバサービス
  • クラウドサービス
  • ハウジングサービス

キャンペーン期間などは必ず http://www.sakura.ad.jp/campaign/rapid_ssl/ から確認してくださいね。それでは申し込んでみましょう。

さくらのSSL お申し込みサイトからRapid SSLの「お申し込み」をクリックします。

20150801_SAKURA-RAPIDSSL_001

20150801_SAKURA-RAPIDSSL_002

SSLサーバ証明書お申し込み画面で、会員IDとパスワードを入力してログインします。会員IDがない、すなわち↑に書いたサービスを利用中でない場合はキャンペーン適用されませんので、いずれかのサービスを申し込みましょう。

20150801_SAKURA-RAPIDSSL_003

お申し込みプランは「ラピッドSSL」を選択します。記載されている値段がキャンペーン適用価格(1年だと0円)で表示されていることを確認しましょう。あとは、支払い情報と(あれば)クーポンコードを入力し、約款に同意して「CSRの入力へ進む」をクリックします。

20150801_SAKURA-RAPIDSSL_004

CSRを作成したマシンにSSHクライアントでログインし、catコマンドでCSRファイルを開いてクリップボードにコピーし、ブラウザに貼り付けます。その後、右向きのボタンをクリックすると、ディスティングイッシュネームが表示されるので、先ほどopensslコマンドで確認した中身と同じかどうか、特にコモンネームが正しいかは絶対確認しましょう

20150801_SAKURA-RAPIDSSL_005

その後、確認画面にすすんで、お申し込みプランがラピッドSSLであること、ディスティングイッシュネームが正しいことを再度確認し、「この内容で申し込む」をクリックします。

20150801_SAKURA-RAPIDSSL_006

「お申し込み受付完了のお知らせ」メールをお届けいたします。 の画面が表示されてから、メールを確認します。

20150801_SAKURA-RAPIDSSL_007

20150801_SAKURA-RAPIDSSL_008

このように、件名が「お申し込み受付完了のお知らせ」のメールが届いていれば、最初のステップ通過です。

さくらインターネット 会員メニュー ( https://secure.sakura.ad.jp/member/ ) にログインし、「契約情報」→「契約サービスの確認」の順にクリックし、「SSL ラピッドSSL (n年)」が表示されていることを確認します。まだこの時点では状態が「申込中」で何もアクションを起こせません。少し待つと手続き欄に「サーバ証明書」が表示されるので、ここをクリックします。

20150801_SAKURA-RAPIDSSL_009

20150801_SAKURA-RAPIDSSL_010

■ 認証ファイルのダウンロードとWEBサーバへのアップロード

会員メニューから「認証ファイルDL」をクリックすると、拡張子がhtmでファイル名がランダムなファイルをダウンロードできるようになります。ここでファイル名は変えずに保存します。

20150801_SAKURA-RAPIDSSL_011

 

20150801_SAKURA-RAPIDSSL_012

また、ファイルの内容は1行のテキストですが、これも中身を変えずにWEBサーバへアップロードします。アクセスログを見てみましょう。(接続元IPアドレスとユーザーエージェントの部分は伏せています)

ほぼ1分強おきにアクセスがありましたが、WEBサーバへアップロードし終わって、ステータスコードが200の行が1行表示されたら、もうアクセスに来ないようなので、証明書が発行された旨メールが来ているか確認してみましょう。

■ サーバ証明書と中間CA証明書のダウンロード

ふたたび会員メニューにアクセスし、サーバ証明書の手続きボタンをクリックします。

20150801_SAKURA-RAPIDSSL_013

 

先ほど「認証ファイルDL」だった箇所が「サーバ証明書DL」になっていることを確認してクリックし、ダウンロードします。また、「ジオトラスト SSLサーバ証明書発行のお知らせ」メールが届いていることも確認します。

20150801_SAKURA-RAPIDSSL_014

20150801_SAKURA-RAPIDSSL_015-01

メールを少しスクロールするとオンラインマニュアルへのリンクがあるので、これを開きます。

20150801_SAKURA-RAPIDSSL_015-02

オンラインマニュアルに「中間CA証明書の取得」が表示されているので、ここから「ラピッドSSL」をクリックします。

20150801_SAKURA-RAPIDSSL_016-01

ジオトラストのサイトに遷移するので、RSA SHA-2 ラピッドSSLの中間CA証明書を選択します。

20150801_SAKURA-RAPIDSSL_016-02

中間CA証明書が表示されるので、これをコピーしてテキスト保存します。

20150801_SAKURA-RAPIDSSL_016-03

■ firewalld設定

今までhttpsのアクセスを許可していなかったので、firewall-cmdコマンドでhttpsの穴をあけておきます。

■ nginx設定

/etc/nginx/ll4u.in/2015/ (ll4u.inの部分は読み替えてくださいね) に証明書ファイルをアップロードします。nginxは中間証明書を直接指定するディレクティブが用意されていないので、サーバ証明書と中間CA証明書を1つのファイル ( /etc/nginx/ll4u.in/2015/cert.pem ) にまとめます。書式はこんな感じです。

/etc/nginx/ll4u.in/2015/cert.pem にサーバ証明書と中間証明書が並ぶようにします。上の段がサーバ証明書、下の段が中間証明書です。こんな感じで保存し、後述するバーチャルホスト設定を行ってから「nginx -t」で構文確認しようとすると

のようなエラーが出てしまいました。。。どうやらここによるとファイルの編集に気をつけろみたいなこと言っていますが、試しにサーバ証明書のEND CERTIFICATE行と中間証明書のBEGIN CERTIFICATEを1行開けて保存、再度nginx -tしてみると

今度はOKですね。

それではopensslコマンドで証明書の中身を確認してみましょう。

Issuerのディスティングイッシュネームがジオトラストのものになっていること、Not Afterがお申し込み通りの期限になっていること(表示はGMTなのでJSTの期限より短い!と騒がないでねw)、SubjectのCN(Common Name)欄がお申し込み通りのホスト名になっていること、Public-Keyが2048bitであることを確認します。

さて、順番が前後してしまいましたが、ll4u.inのバーチャルホスト設定ファイルも修正します。今まであったserverディレクティブのlistenを80から443 sslに変更し、新たに以下を追記して、httpでのアクセスをすべてhttpsに変更します。

そして、今までhttpでアクセスさせていた方のserverディレクティブはこんな感じにします。

以上の設定が終わったところで、nginx -tで構文確認してOKであれば、nginxを再起動します。

それでは http://ll4u.in/ (あえてhttpsではなくhttp) にアクセスしてみましょう。https://ll4u.in/ にリダイレクトされていればOKです。

20150801_SAKURA-RAPIDSSL_017

20150801_SAKURA-RAPIDSSL_018

コマンドラインでリダイレクトされていることを確認するにはcurlが便利です。

以上で、さくらのVPSにインストールしたnginxのサイトをSSL化する手順はおしまいです。もっと儲かったらnullpopopoもSSL化するかなー。