SSLを任意のウェブサイトに設定することは挑戦です。サイトの訪問者、ブラウザ、および検索エンジンは、適切にセキュアソケットレイヤー(SSL)で保護されたウェブサイトを評価します。以前は、このプロセスにはSSL証明書の購入、インストール、および構成が含まれていました。しかし、Cloudflare SSLを使用すれば、わずか数回のクリックでSSLの構成プロセスを完了できます!
この記事では、Cloudflareを使用してサイトをSSL暗号化で構成する方法を学びます。つまり、エンドツーエンドの暗号化されたSSL接続に進んでいきましょう!
前提条件
このチュートリアルに従うには、以下のいくつかの前提条件が必要です:
- A Cloudflare account with an existing website and domain pointed to the Cloudflare nameservers.
- NGINXがインストールおよび構成されたUbuntu Linuxサーバー。 このチュートリアルではLinuxとNGINXを使用していますが、同じ一般的なプロセスはIISまたはApacheにも適用できます。
Cloudflare Universal SSLの設定: これは始まりに過ぎません
複数の方法で、Cloudflareを使用してSSLを構成することができます。しばしば、最も迅速な方法はUniversal SSLを選択することです。なぜなら、Universal SSLでは、SSL証明書を見つけて購入する代わりに、Cloudflareが証明書を提供し、その証明書を通じて送信されるすべてのトラフィックがそれを使用するからです。
Universal SSLを有効にした後、Cloudflareは訪問者と検索エンジンの両方に有効なSSL証明書を提示します。Cloudflareはまた、サーバーまたはウェブサイトをその証明書を使用するように構成することを必要としません。素晴らしいですね!
1. ウェブブラウザを起動し、Cloudflareダッシュボードにログインします。
2. 下のアカウントドメインリストからサイトに移動します。

3. 今、SSL/TLSをクリックして、サイトの暗号化オプションを表示します。

4. Flexibleオプションを選択して、Universal SSLを有効にします。選択したら、変更が直ちに有効になります。これで、ブラウザとCloudflare間でサイトが暗号化されました!

完全なエンドツーエンドSSL暗号化の構成
Universal SSLはサイトをセキュリティで保護するための優れたオプションですが、サーバーとCloudflare間のトラフィックは保護されません。幸いなことに、Cloudflareからサーバーへのトラフィックを暗号化する2つの暗号化モード、FullとFull(strict)の暗号化があります。それぞれに異なる認証のインストール要件があります。
- Full – サーバーに証明書が必要ですが、これは自己署名証明書でもかまいません。
- Full (strict) – インストールされたサーバーサイド証明書は有効な証明書でなければなりません。
これらの暗号化の違いとそれらの設定方法について説明しましょう。
セルフサイン証明書を使用した完全なSSL/TLS暗号化の設定
ユニバーサルSSLとは異なり、完全なSSL/TLS暗号化では、ウェブサーバーがSSL証明書を正しく提供してトラフィックをCloudflareに対して暗号化する必要があります。これを達成する方法はいくつかありますが、このチュートリアルではLinuxサーバーとNGINXを使用した手順を示します。
セルフサイン証明書の生成
Cloudflareとオリジンサーバー間の接続を暗号化するには、SSL証明書が必要です。完全なSSL/TLS暗号化モードでは証明書が完全に信頼されている必要はないため、すぐに実行できるセルフサイン証明書を使用できます。
1. Linuxウェブサーバーにセキュアシェル(SSH)で接続します。
2. 標準のUbuntu SSLディレクトリ(/etc/ssl
)に移動するには、以下のコマンドを実行します。cd /etc/ssl

/etc/ssl
directory3. 次に、サイトの公開鍵と秘密鍵を両方生成します。これには以下のopenssl
コマンドを実行します。
このコマンドはいくつかのことを達成します:
-x509
パラメータで提供されるX.509証明書を要求します。- NGINXによって参照されると、
-nodes
パラメータを使用してNGINXが起動時に証明書を読み取ることができます。 - 証明書の有効期間を指定します。
- 新しい公開鍵と秘密鍵を、2048ビットのRSA暗号化(`rsa:2048`)を使用して、
-newkey
を介して作成します。 - 秘密鍵を
/etc/ssl/private/nginx-selfsigned.key
に-keyout
パラメーターを使用して保存します。 - 公開鍵を
/etc/ssl/certs/nginx-selfsigned.crt
に-out
パラメーターを使用して保存します。
もし
openssl
がCan't load /root/.rnd into RNG
という無害なエラーを返した場合は、/etc/ssl/openssl.cnf
の#RANDFILE = $ENV::HOME/.rnd
行をコメントアウトする必要があります。すべての最新バージョンのopenssl
はランダムエントロピーデータにシステム/dev/urandom
デバイスを使用し、特定のファイルをシードとして必要としません。
4. コマンドを正常に実行した後、opensslがいくつかの情報を求めます。このチュートリアルで提供されたすべての値を以下に示します。
- 国名:
US
- 州または州の名前:
イリノイ
- 地域名:
ブルーミントン
- 組織名:
テスト会社, LLC
- 組織単位名: <空白>
- 共通名:
test.adamlistek.me
- 電子メールアドレス:
[email protected]

5. 最後に、test
コマンドを使用して証明書が存在するか確認します。 test
コマンドが(echo $?
) 0
を返す場合、ファイルは期待どおり存在しています。 以下のスクリーンショットで、各コマンドが0の値を返したことが確認できます。

NGINXの設定
証明書が生成され、/etc/ssl/certs
および/etc/ssl/private
キーの場所に保存されたので、NGINXを設定して証明書を適用し、サイトのコンテンツを提供する必要があります。
NGINXのサイト設定は、通常、仮想ホストファイルに含まれるserver
ブロックで定義されます。以下の例では、基本的なサイト構成がtest.adamlistek.me.conf
ファイルに保存され、メインのnginx.conf
ファイルに含まれています。
1. まず、新しい仮想ホストファイルを作成します。名前は自由に選択できますが、この例ではtest.adamlistek.me.conf
とします。ディレクトリ/etc/nginx/vhosts.d
の下に保存します。次に、以下の内容を仮想ホストファイルにコピーして保存します。
この例では
test.adamlistek.me
ドメイン名を独自のものに置き換えてください。そして/etc/nginx/vhosts.d
場所が存在しない場合は、mkdir /etc/nginx/vhosts.d
を実行してディレクトリを作成します。
2. 主要なNGINX構成ファイルである/etc/nginx/nginx.conf
が、http
ブロック内の必要なinclude
行を含んでいることを確認します。この行は、ブロックの最後に配置されています。
3. もしsystemdを使用している場合、つまりLinux用のモダンなシステムおよびサービスマネージャーを使用している場合は、以下のコマンドでNGINXを再起動します。
4. Cloudflareに戻り、自己署名証明書が機能していることを確認します。そのためには、以下に示すようにDNSレコードの「オレンジクラウド」を無効にします。プロキシステータスの下にある。 「オレンジクラウド」オプションを無効にすると、Cloudflareをバイパスしてウェブサーバーから直接リクエストを処理します。

5. ウェブブラウザでウェブサイトに移動して、新しく作成した自己署名証明書が返されることを確認してください。 これにより、以下に示す警告ページが表示されます。

6. 最後に、CloudflareでフルTLS/SSL暗号化を有効にします。 これを行うには、以前に無効にしたDNSレコードで「オレンジクラウド」Cloudflareプロキシステータスを再度有効にします。 次に、 SSL/TLS タブに移動し、以下に表示される 完全 ラジオボタンをクリックします。

フル(厳格)SSL/TLS暗号化のオリジン証明書を生成する
フル暗号化モードでは、Webサーバーによって提示される証明書が実際の有効な証明書チェーンを持っていることを保証しません。 その代わりに、非厳格な暗号化を選択し、Cloudflareはサーバーによって提示される任意の証明書を受け入れます。
Cloudflareは、オリジンサーバー接続を保護するための無料のTLS証明書を生成する機能を提供しています。 ただし、Cloudflareが提供するオリジン証明書を使用すると、2つの欠点があります。 1つ目は、証明書を手動で生成およびインストールする必要があることです。 2番目は、証明書がCloudflare以外のブラウザに信頼されない自己署名証明書のように見えることです。
Origin CA Create Certificate API エンドポイントを使用して証明書の生成を自動化することは可能ですが、これはこのチュートリアルの範囲外です。
1. SSL/TLS タブに移動し、以下に示すようにオリジンサーバーをクリックして、証明書の作成ボタンをクリックします。

2. 下記のように、デフォルトオプションは既にドメインのワイルドカード証明書を生成するように設定されています—素晴らしいですね!ですので、デフォルトオプションをそのままにし、ページの右下隅にある作成ボタンをクリックして証明書を生成してください。
A wildcard certificate, shown as
*.domain.com
, means that any subdomain will also be covered by this certificate including www.

3. 新しく作成した証明書をLinuxシステムに追加するには、まずGNU nanoテキストエディタを使用してプライベートキーとパブリックキーを保存します。保存するキーが2つあるため、キーファイルを1つずつ保存する必要があります。
オリジナル証明書を生成した時点でのみプライベートキーが利用可能であるため、プライベートキーを保存することを確認してください。このキーを誤って失った場合は、証明書を取り消して新しい証明書を発行してください。
端末を開いて、次のコマンドを実行してnanoで公開鍵ファイル(nginx-test.adamlistek.me.crt
)を作成して開きます。
次に、Cloudflareに戻って、下記のように表示されるコピーするオプションをクリックしてオリジン証明書キー(公開鍵)をコピーします。次に、nanoで開いた公開鍵ファイルにコピーした公開鍵を貼り付けます(Ctrl+U)。変更内容を保存します(Ctrl+O)し、nanoから終了します(Ctrl+X)。
公開鍵ファイルを保存した後、キーファイルを作成し、Cloudfareからキーをコピーしてキーファイルに保存するプロセスを同じように繰り返します。ただし、今回はプライベートキーファイル(nginx-test.adamlistek.me.key
)を作成しています。

4. これで、公開鍵と秘密鍵が作成されました。証明書の場所を指定するために、test.adamlistek.me.conf
構成ファイルを以下の行に変更して、NGINXを指定します。
5. 新しい証明書を適用するには、次のコマンドでNGINXを再起動します。
6. CloudflareのSSL/TLSタブに戻り、下に示すように、SSL/TLS暗号化モードを更新して、Full (strict)をクリックします。

LetsEncryptでFull (strict) SSL/TLS暗号化を有効にする
Cloudflareのオリジン証明書を使用する最大の欠点は、それがCloudflareだけで信頼されるということです。完全にブラウザで信頼される証明書が必要な場合、フォールバックとしてまたはさらなる制御のために、LetsEncryptは適切な証明書を生成する機能を提供します。
有効な証明書を生成するための一般的な選択肢であるLetsEncryptを使用できますが、複数のLetsEncryptクライアントが利用可能です。このチュートリアルではacme.shクライアントを示します。
すでにCloudflareを使用しているのであれば、LetsEncryptとのDNSプロビジョニングのための最良の方法の1つは、DNSオプションを使用することです。
1. まず、ターミナルを開いてcurl
コマンドを使用してacme.shをインストールします。

2. 次に、インストールディレクトリにあるaccount.conf
ファイルを作成または変更して、保存されたCloudflare APIキーを追加します。これらのキーは、Cloudflareダッシュボードのプロファイル —> APIトークンセクションで見つけることができます。
特定の許可制限トークンを作成することもできますが、このチュートリアルの目的で、以下に示すようにグローバルAPIキーを適用します。
3. 次のコマンドを使用して証明書を生成します。以下のコマンドでは、acme.sh
クライアントにCloudflare(dns_cf
)を使用して証明書の所有権を確認(--dns
)するよう指示し、待機時間(--dnsslep
)を20秒に設定してから、証明書を発行(--issue
)します。(-d
) ドメイン(test.adamlistek.me
)。
コマンドが完了すると、以下に、証明書、証明書キー、中間CA証明書、および完全なチェーン証明書を見つけることができる場所が表示されます。

4. 前述のように、NGINXサイトの構成を変更してssl_certificate
とssl_certificate_key
の場所を変更します。/home/user
をお使いのacme.shインストールの場所に置き換えてください。
5. 次のコマンドでNGINXを再起動して新しい構成を適用します。
6. 最後に、Cloudflare SSL/TLS暗号化モードを更新してSSL/TLSタブに移動し、完全(厳密)をクリックします。

結論
このチュートリアルでは、さまざまなCloudflareの提供するSSL/TLSオプションを使用してサイトを保護する方法を学びました。Cloudflare SSLの設定にLetsEncryptを追加することで、柔軟でユーザー管理可能なオリジン証明書のオプションが追加されます!
サイト訪問者への接続を完全に安全にするためのさまざまなオプションの知識を持つことで、Cloudflare SSLを使用してサーバーへの完全に安全な接続に進むことができますか?