Harry World!!

カナダ留学(バンクーバー・トロント)と海外就職を目指す人のための情報、クラウドソーシングサイトやネットショップの活用方法などを初心者向けに解説するブログ。

サーバー管理

cPanelでのSSL証明書の設定手順

投稿日:2017年8月1日 更新日:

こんにちは。トロントでウェブデベロッパーとして働いているHarryです。

会社のHPに利用しているSSL証明書の期限が切れそうだったので、プロバイダの契約を更新して、Webサーバに証明書をインストールしなおしました。途中つまづいたところがいくつかあったので、cPanelでのSSL証明書の設定手順をシェアします。

cPanel、日本のレンタルサーバでは導入しているところはあまりありませんが、海外サーバでは主流です。ApacheなどWebサーバの知識がなくてもGUIで設定できちゃいます。日本はなんでもかんでもガラパゴス化していくので、Webサーバの設定は自社開発のGUIが多いですね。開発コストもかかりますし、ユーザも会社を変えるたびに新しいGUIに慣れなくてはなりません。なぜcPanelを使わないのか謎です…が、それは今回おいとおいて。

今回プロバイダとWebサーバをレンタルしている会社は別々です。証明書のプロバイダはGoDaddy、WebサーバはServInt。

手順は大きく分けて6つ

1. [SSLプロバイダ]SSL証明書の利用プランを契約
2. [Webサーバ]秘密鍵を生成
3. [Webサーバ]CSRを作成してSSL証明書のプロバイダに送信
4. [SSLプロバイダ]証明書を取得
5. [Webサーバ]証明書をアップロード
6. [Webサーバ]証明書をインストール

証明書のインストールが終わったらソースを「http」から「https」へ書き換えていきます。ここはツールを使ってやることもできるのですが、インストールまでが大変ですね。

では手順を見ていきます。

1. [証明書プロバイダ]SSL証明書の利用プランを契約

まず証明書のプロバイダと契約します。値段はプロバイダやプランによってピンキリです。セキュリティ事故があった際の補償額などが違うようです。

GoDaddyのプランは基本的に3つしかなく、一つのサイトのみ保護(99.99カナダドル/年)、複数のサイトを保護(217.99カナダドル/年)、サブドメインまで保護(434.99カナダドル/年)と、保護する範囲が広がるにつれて高額になっていきます。

ここで契約したからといってすぐに証明書が手に入るわけではないので注意。以下の操作が必要です。

2. [Webサーバ]秘密鍵を生成

今度はサーバ側の作業になります。cPanelにログインしたら「SSL/TLS Manager」を探しましょう。

「秘密キーを生成、表示、アップロード、または削除します。」をクリックします。

新しくキーを生成するか、既に持っているキーをコピペでアップロードする、もしくは.keyファイルを選択してアップロードするかを選択できます。

通常はキーは持っていないと思うので、新しく生成します。

「キーサイズ」は2048bitを選択、「説明」には証明書を適用したいサイトのドメイン名を入れておきましょう。

入力が終わったら「生成」をクリックします。
秘密鍵の生成は以上で終了です。

3. [Webサーバ]CSRを作成してSSL証明書のプロバイダに送信

今度は先ほど作った秘密鍵を使ってCSRを作成します。

「SSL/TLS Manager」の画面に戻って「SSL 証明書署名要求を生成、表示、または削除します。」をクリックしましょう。

CSRというのはCertificate Signing Requestの略で、証明書をプロバイダに作ってもらうための要求書、のようなものです。
項目を順番に入力していきます。最初にキーを選択しますが、この時手順1で生成した秘密鍵を選択してください。

「ドメイン」には証明書を適用したいドメイン名を入力します。ここを間違えると手順6のインストールでつまづきますので注意してください。

入力が終わったら「生成」をクリックします。

4. [証明書プロバイダ]証明書を取得

手順3で作ったCSRをプロバイダに送信して証明書を発行してもらいましょう。

今度はまたプロバイダ側の設定へ戻ります。

GoDaddyの設定画面です。設定画面は会社によって異なりますので参考程度にみてください。

「リキー&管理」をクリックします。リキーはおそらくRe-keyを無理やり和訳してますね。キーの設定をし直す、という感じでしょうか。

CSRを貼り付けるフォーマットがありますので、ここに手順3で作ったCSRを貼り付けます。サーバ側の「SSL/TLS Manager: 証明書署名要求の表示」画面に表示される「エンコード済みの CSR:」をコピペしてください。

最後に「送信」ボタンを押したら証明書が発行されるのをしばらく待ちましょう。証明書の発行には数時間必要…などと書かれているかもしれませんが、経験上3、4分程度で発行されることが多いです。

管理画面の証明書発行ステータスが「検証待ち」から「発行済み」に変わったらダウンロードします。

これで証明書の準備は整いました。

5. [Webサーバ]証明書をアップロード

サーバ側の設定に戻ります。

先ほどのcPanel上の「SSL/TLS Manager」の中の「SSL 証明書を生成、表示、アップロード、または削除します。」をクリックします。

証明書の貼り付け、.crtファイルのアップロード、新しい証明書の作成が選べますが、今回は先ほどダウンロードした.crtファイルをアップロードします。

これで証明書のアップロードもOK

6. [Webサーバ]証明書をインストール

最後にアップロードした証明書をインストールしましょう。

「SSL/TLS Manager」に戻って「SSL サイトを管理します。」をクリックします。

中段にドメインを選択できるプルダウンリストがあるので、この中から証明書を適用したいドメイン名を選択します。ドメインを選択するとリストの右側に「ドメインによる自動入力」というボタンが現れますのでクリックします。

設定が全てうまくいっていれば、ボタン下の「証明書: (CRT) 」、「秘密キー: (KEY) 」、「証明機関バンドル: (CABUNDLE) 」が自動的に入力されます。

最後に「証明書のインストール」ボタンをクリックして完了です。

以上がcPanelを使った基本の証明書インストール操作です。

おまけ インストールに失敗した際の対処

まっさらな状態からインストールするなら起こらなかったと思いますが、古い証明書の設定と混在させたことで、インストール時にエラーが発生しました。

「The does not match the certificate」

cPanelの言語を英語に設定していたので、日本語の場合と違うと思いますが、要は「キーと証明書が一致しない」と言われているようです。

サーバ側のカスタマーサービスに問い合わせた回答がこちら

We are not able to find the root issue however what I understand is WHM attempts to find the appropriate private key to match the domain but it fails. However, if multiple CSRs or private keys are installed for the domain, the system may not identify the correct private key. You likely have the wrong private key for the cert. I’ve seen this happen a few times. Other option is remove all SSL certs/CSRs/keys for the domain. Then generate a new CSR. This way there will only be one key on the server and WHM should get the match right. Then send this new CSR to your cert provider. This way the only private key in WHM would have to match the CSR you used. I suspect something is just getting mixed up along the way.

In some cases I have see this issue because of mismatch in information like SSL organization, address, etc. Which you have provided to your registrar did not precisely match the information which used in WHM to generate the private key.

サーバがドメインにマッチする秘密鍵を探しているけど、見つけられないみたい。なのでキー、CSR、証明書を全部いったん削除してから証明書を発行しなおしてね!

ってことだったので秘密鍵、CSR、証明書を全て削除してからCSRを作り直して証明書を再生成。その後インストールしましたが同じエラーが発生しました。

今度はプロバイダ側のカスタマーサービスに確認。手順を一通り確認したが、間違いないので問題は別にありそうとのこと。

そこで期限が切れそうな契約を残したまま新しいプランを契約したので、古い方を削除してから証明書を再作成、という手順を踏みましたがやはり直りません…

結局3時間も問合せましたが解決せず、証明書の発行に不具合があるようなので、希望するのであればSSL証明書の契約を破棄、返金できるとのこと。

翌朝(7,8時間放置したあと)、ある程度時間が経ったのでもう一度証明書を発行してみました。

今度は「証明書が保護するサイト」のみ変更(「キー」、「 暗号化アルゴリズムおよび/または証明書発行者」は未更新)

これで発行した証明書をインストールするとようやくうまくいきました。

この結果から考えられる原因は2つ。

1. Webサーバの問題。なんらかの不具合で証明書インストール時に一致しないキー(古いキー?)を参照していたが、キー、CSR、証明書を全て削除したことで設定がリセットされ、正しいキーを参照するようになった
2. 証明書の問題。証明書を発行するプランを2つ契約していた。保護するサイトは同じだが、契約プランが違うので証明書を新しく発行しなければならなかった。新しい証明書を作成する際に古いプランのキーと結び付けられて作成された。

どちらにしても、7,8時間放置しているので、設定を変更してから反映されるまでにある程度時間がかかるようです。あとはCSRの変行わず、「証明書が保護するサイト」のみ変更したこともポイントかもしれません。

長かった…丸一日費やしました。証明書のインストールがうまくいかない方のお役に立てれば幸いです。

余談ですがhttps化が終わったら、Google AnalyticsのデフォルトURLをhttpsに変更するのをお忘れなく。

まとめ
今回どうしても分ける必要があったのでサーバとは別の会社で証明書を購入しましたが、インストールにつまづいた時に困るので、できればサーバを借りている会社から手に入れることをおすすめします。設定が圧倒的に楽です。

別の会社から安く手に入れられるのはいいのですが、問題が発生した際にたらいまわしにされます。プロバイダに問い合わせたらサーバに聞いてくれといわれ、サーバに問い合わせたらプロバイダに聞いてくれといわれる…といった感じですね。







-サーバー管理
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

whmとcPanelとの違いとは?

こんにちは。トロントでWebデベロッパーとして働いているHarryです。 WHMとcPanelの違いについて書きます。 下の表は日本のトップレベルドメイン「.jp」のウェブサイトが位置するホスティング …

cPanelとは何か?まずは日本語に設定してみよう!

こんにちは。トロントでウェブデベロッパーとして働いているHarryです。 このブログで何度も登場するcPanelとは何かについて説明します。 まずこれがcPanelの画面 wikipediaによると …