無料SSL（Let's Encrypt）をcPanelとZeroSSLで簡単設定して、Httpのアドレスを自動でHttpsにリダイレクトさせる方法


#はじめに

SSLは、Let's EncryptのSSL証明を利用することで無料で行うことができます。
Let's EncryptのSSL証明は期限が90日です。
SSLを使い続けたい場合は、９０日が切れる前に、更新をかけてください。

毎回この手順通りに進めれば、慣れれば５分で完了します。

ここでは、Godaddyなど、cPanelを利用できるホスティングサービスに、Let's Encryptを導入する方法をまとめています。

ここでは以下を説明します。

- 「**ZeroSSL**」サービスを利用した、簡単にSSL化の手順。

- **`Http://`へのアクセスを自動的に`Https://`へ**リダイレクトする方法


#ZeroSSLを利用してドメインをSSL化する

##ZeroSSLにアクセスする

[まずはZeroSSLにアクセスします](https://zerossl.com/)
https://zerossl.com/

その後、TOPページから「ONLINE TOOLS」 => 「START」の順にクリックします。

![スクリーンショット 2019-11-04 16.51.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/7a73a54d-78a0-93c3-0694-a7a365439463.png)


##SSL化するドメインを入力する

SSL化したいドメインを、コンマで区切って２パターン入力します。

- ドメイン（例：`sample.com`）

-  `www.`をつけたドメイン（例：`www.sample.com`）

同じ画面の下部に2つのチェックボックスがあるので、２つともにチェックします。

入力できたら「NEXT」をクリックします。
すると、CSRが生成されます。

![スクリーンショット 2019-11-04 16.54.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/8ad49f14-c4e0-c876-4c8f-c7f22bf60fac.png)


##CSRをクリップボードにコピーする

CSRが生成されたら、入力ボックス右上のボタンを使って、クリップボードにコピーしましょう。
（もしくは、ダウンロードしても構いません）

コピーしたら、「NEXT」をクリックします。

![スクリーンショット 2019-11-04 17.05.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/6c5d636b-8441-1cff-a3d4-8bd3d9dbd1d0.png)


##プライベートキーをクリップボードにコピーする

今度は左側のボックスに、プライベートキーが生成されます。
入力ボックス右上のボタンを使って、クリップボードにコピーしましょう。
（もしくは、ダウンロードしても構いません）

コピーしたら、「NEXT」をクリックします。


![スクリーンショット 2019-11-04 20.54.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/a32c841a-ea60-9b68-416e-4c639007e840.png)


##認証に必要なファイルのダウンロード

認証に必要なファイルが表示されます。
２つともダウンロードしておいてください。

![スクリーンショット 2019-11-04 21.04.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/1f4965a1-ae73-808f-43b0n-6e4bc51aee73.png)


##cPanelにアクセス

お使いのホスティングサービスの管理画面からcPanelを開き、
ファイルマネージャーを開きます。

![スクリーンショット 2019-11-04 21.07.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/c7debce6-f23f-c519-2229-3c3cae200edb.png)


##フォルダの作成と認証用ファイルのアップロード

- `public_html`内に、`.well-known`という名前のフォルダを作成します。

フォルダ名の先頭に`.（ドット）`がつくと、隠しフォルダになるため、フォルダが表示されないことがあります。
作ったフォルダが表示されない場合は、以下のとおり設定を変更してください。

- 画面右上の「Setting」をクリック

- 「Show Hidden Files」にチェックを入れる

![スクリーンショット 2019-11-04 21.12.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/16ce3bd1-6938-d250-44c7-0cfc238aad9c.png)


- さらに`.well-known`フォルダの中に`acme-challenge`という名前のフォルダを作成します。

- さらにさらに、`acme-challenge`フォルダのなかに、先ほどダウンロードした認証用ファイル２つをアップロードしてください



![スクリーンショット 2019-11-04 21.19.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/d0dcb4b8-97a0-9ac5-9adc-984ee8d72994.png)


##認証できたかどうか確認

認証用ファイルをアップロードしたら、ZeroSSLに戻ってください。

ダウンロードアイコンの横の文字列をクリックして、以下のような文字列（一語一句同じ文字列ではありません）がブラウザに表示されていれば、
認証用ファイルのアップロードが完了しています。

もし表示されない場合は、エラーの可能性があります。

![スクリーンショット 2019-11-04 21.20.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/1c970172-a994-6aa2-d11e-c8a6fd3606d0.png)


問題なければ「NEXT」をクリックして次へ。


##cPanelからSSLの管理ページへ

- cPanelに戻って、今度は「SSL/TSL」のページを開いてください。

- 「Install and Manage SSL for your site (HTTPS)」を開いてください。


##認証コードとプライベートキーの貼り付け１

ページをスクロールすると、ドメインの選択フォームと、３つの大きめのインプットボックスがあるかと思います。
ZeroSSLに表示された２つのコードをこれから手順にしたがってインプットボックスにコピペしていきます。

![スクリーンショット 2019-11-04 21.27.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/55222156-9219-dae2-103b-73aceddbce89.png)


- まず、今回SSL化するドメインを選択します。


- 一番上のインプットボックスには、ZeroSSLの上部のコード（以下参照）をコピペします。

![スクリーンショット 2019-11-04 21.25.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/bbf83441-5d57-f667-9f11-b24f29f6b6aa.png)

しかし、このコードはエラーになってしまいます。

![スクリーンショット 2019-11-04 21.34.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/330131d4-600c-f3cb-1eed-81bdbee0a204.png)


**貼り付けたコードの真ん中あたり**に、

```
i27FMvI7L5oYCeXTO4XFKh4jYAkgJiT58natAN4=
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
```

となっている部分があるかと思います。

じつはこのコード、２つのコードが１つになっています。

`-----BEGIN CERTIFICATE-----`以下は、３つのインプットボックスの、**一番下のボックス**に貼り付けるべきものです。

`-----BEGIN CERTIFICATE-----`以下を**切り取って**３つのインプットボックスの、**一番下のボックス**に貼り付けます。


![スクリーンショット 2019-11-04 21.38.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/567dec98-4324-5559-e8ed-a0e4979586aa.png)


##認証コードとプライベートキーの貼り付け２

最後に残った真ん中のインプットボックスは、「プライベートキー」を貼り付けます。

ZeroSSLに表示された、下のコード（プライベートキー）を貼り付けてください。

終わったら、「Install Certificate」をクリックして、SSL化は終了です。


#`Http`のURLから自動で`Https`にアクセスするように設定する

ここからは、
**`Http://`へのアクセスを自動的に`Https://`へリダイレクト**する方法を説明します。

##新しいファイルの作成とコードの貼り付け

- `public_html`内に、`.htaccess`という名前の**ファイル**（フォルダではなくファイルです）を作成します。(すでに存在していることもあるようです。その場合は新しく作る必要はありません)

- ファイルを「Edit」します。

以下のコードを、ファイル内にコピペしてください。すでにファイルが存在していて、他にコードが書かれている場合は、他のコードは消したり触らないで、一番下に貼り付けてください。

```
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
```

![スクリーンショット 2019-11-04 21.51.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452235/ab37e1bc-fc78-c88e-c3a7-c275bf8157be.png)



貼り付けたら「Save Changes」してください。

これで完了です。

**`Http://`へのアクセスを自動的に`Https://`へリダイレクト**しているかと思います。


#まとめ

- 「**ZeroSSL**」サービスを利用した、簡単にSSL化の手順

- **`Http://`へのアクセスを自動的に`Https://`へ**リダイレクトする方法

をまとめました。