KUSANAGIのSSL(lets encrypt)をcloudflareに登録する

スポンサーリンク

lets encryptの証明書をCloudflareに登録

皆さんこんにちは、今回はSSLの話

KUSANAGIはコマンドで簡単にlets encryptから証明書を発行しSSLに対応させてくれます、実に便利ですね。

ただCloudflare等のCDNの恩恵を受けられません、CDNにKUSANAGIにある証明書を設定しないと駄目なのです。
逆にサーバーとCDN間はSSL無し、CDNとブラウザ間ではSSL対応のFlexible SSLなどもありますが、wordpressとの相性の問題であまり使いたいとは思いません、便利ですがね(汗)

なので今回はFULL SSLをやってみたいと思います。
なお今回はNginxを想定して進めます。

CSRの生成

まずはKUSANAGI側の操作

この記事を参考にKEYとCSRを生成します

次にKeyを元にCSRを生成します、上の記事の通り識別名を入力していきます、なおこのとき正式英語企業名という項目がありますが、調べると無い場合や設定したくない場合は空欄でも問題ないとのこと(自分は空欄にしました

Common Nameの部分は自分の場合はpremirea.jpとなります、各自メインドメインの部分を設定してください。

CSRの確認

記事にも書いてありますが、自分はFTPで確認しました、このときsslフォルダにdhparam.keyというのがもう生成されてる?かもしれませんがCSR生成には使えないKEYなのでそっとしておいてください(Nginx上では使われてるので絶対に消さないように

Cloudflareに登録

次は生成したCSRを登録します、Cloudflareを開きCryptoタブを開きOrigin CertificatesからCreate Certificateを選びます。

そうすると選択肢が出てくるので下を選択。

ここに先程生成したCSRの中身をペーストして、Nextしてください。
生成したCSRの一番上と一番下の行も含みます。

次にCloudflareのユニバーサル証明書を発行します。

ここでuniversalタイプの証明書を発行します、お金を払うことでオリジナルの証明書を発行することもできます。

Cryptoタブの一番下のuniversal SSLをenableにする必要があるかもしれません。

PEMファイルの作成

nextするとPEMファイルに貼り付ける文字列が生成されますのでPC等で任意の名前の.PEMを作成して文字列をペーストしてください。

後はそのPEMファイルを任意のサーバーのフォルダにアップロードしてください。

Nginxの設定

Nginxの設定を変更します、変更するファイルは/etc/nginx/conf.dにあります。

(kusanagiで作ったプロパティ名)_ssl.conf

これを編集します、開くと

ssl_certificate /etc/letsencrypt/live/(設定したfqdn)/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/(設定したfqdn)/privkey.pem;
ssl_dhparam /etc/kusanagi.d/ssl/dhparam.key;

の3行が開いて上の方すぐにありますのでこの3行をコメントアウトします。

で、上の二行(dhparam行以外)をコピーしてしたの行に追加で貼り付けます。

あとはssl_certificateの行に先程アップロードしたpemファイルまでのディレクトリを記述、ssl_certificate_keyにはKUSANAGIで生成したkeyファイルへのディレクトリを記述。

例:
ssl_certificate /etc/letsencrypt/live/(設定したfqdn)/(任意の名前).pem;
ssl_certificate_key /etc/letsencrypt/live/(設定したfqdn)/(任意の名前.任意の年号).key;

これで、Nginx側の設定は終わりです。

仕上げ

KUSANAGIでコマンド kusanagi restartまたは kusanagi nginx をしてNginxを再起動させてください。

そしてCloudflareではSSLを有効化させてください。

自分はFULL(strict)にしました。

ちなみに、letsをcloudflareに登録しないでDNSタブのstatusの雲を有効にするとエラーになるので登録し終わるまで、無効にしておいてください(回避モード)

無事に導入が成功すると、ブラウザでの証明書の内容がletsからcloudflareに変わります。

多分、サーバーとcloudflare間ではlets、cloudflareとブラウザ間ではcloudflareの証明が使われているのでしょうか?
もしかしたら自分なにか勘違いしてる可能性が結構高いです(汗)

まあ導入できたからいいですが(*’ω’*)

これでcloudflareの恩恵を受けたままSSL化できましたね。

Lets encryptに戻す

これは簡単です、Nginxのconfに記述した二行をコメントアウト、コメントアウトされた行をアンコメント(ハッシュを取る)

CloudflareもLetsに戻すプロパティのドメインのDNSをCDN回避(灰色の雲)にします。

あとはNginxを再起動させることでcloudflareを回避してletsの証明をつかったSSLになります。

プロパティごとにletsとcloudflareのSSLを分ける

KUSANAGIでプロパティを作るとletsの証明書設定で生成されるので毎回プロパティ作るごとにCloudflareのSSL記述をするわけですが、プロパティによってはcloudflare使わなくていいや(CDNのキャッシュは邪魔)という人もいると思います、先のletsに戻す方法のところで気がついてると思いますが、プロパティごとにcloudflareを使わない設定もできます。

例としてはAのプロパティのconfにはcloudflareの証明を設定、cloudflareも雲を有効化でプロパティAはcloudflare経由になります。

プロパティBはconfの記述をいじらず、cloudflareも雲のマークを灰色にするだけで問題ないです。

これでプロパティごとにSSLを分けれます。

まあcloudflareですべてのプロパティをSSL有効化して、cloudflareのルールでサブドメインごとにキャッシュをバイパスする方法もありますがね(汗)

わからない部分がある方は、コメントしていただければできる限りお答えさせてもらいますのでぜひ。