TypistTech.trellis-cloudflare-origin-ca
Trellis Cloudflare Origin CA
Cloudflare Origin CAを、TrellisにSSLプロバイダとして追加します。
♥を込めて作成された Typist Tech
Trellis Cloudflare Origin CAは、オープンソースプロジェクトで完全に無料で使用できます。
しかし、新機能の維持と開発には、適切な資金支援がないと持続可能ではありません。もし可能であれば、以下のリンクから寄付を考慮してください。
Cloudflare Origin CAを、TrellisにSSLプロバイダとして追加します。
なぜ?
短い答え:Cloudflareとサーバー間の接続をプライベートかつセキュアに保つためです。
詳しい答え:
CloudflareのフレキシブルSSLモードは、無料プランのCloudflareサイトに対してデフォルトです。このモードでは、ブラウザからCloudflareへのトラフィックは暗号化されますが、Cloudflareからサイトのオリジンサーバーへのトラフィックは暗号化されません。Cloudflareとオリジンサーバー間の接続を暗号化する完全かつ厳密なSSLモードを利用するには、オリジンサーバーに証明書をインストールする必要があります。
Cloudflareブログ - ユニバーサルSSLによるオリジンサーバー接続のセキュリティ
Cloudflare Origin CAのメリットは何ですか?Let's Encryptよりも?
Let's Encryptから証明書を取得するには、最初にCloudflareを無効にする必要があります。Cloudflareは実際のサーバーIPを隠し、Let's Encryptのチャレンジを失敗させます。Cloudflare Origin CAを使うことで問題が簡単になります。
Cloudflare Origin CAの利点は他の公開証明書に対して何ですか?
CloudflareブログのCloudflare Origin CAの導入をご覧ください。
ロール変数
# group_vars/<environment>/vault.yml
# このファイルは暗号化されるべきです。詳しくは: https://roots.io/trellis/docs/vault/
##########################################################################
# Cloudflare Origin CAキー
# CloudflareグローバルAPIキーとは混同しないでください
# 詳しくは: https://blog.cloudflare.com/cloudflare-ca-encryption-origin/#iiobtainyourcertificateapitoken
vault_cloudflare_origin_ca_key: v1.0-xxxxxxxxxxx
# group_vars/<environment>/main.yml
###################################
# 希望するパッケージ状態を示します。
# `latest`は最新バージョンがインストールされることを保証します。
# `present`は既にインストールされている場合は更新しません。
# 選択肢: present|latest
# デフォルト: latest
cfca_package_state: present
# 機密性の高いタスクの結果を隠すかどうか。
# 選択肢: true|false
# デフォルト: false
cloudflare_origin_ca_no_log: true
# group_vars/<environment>/wordpress_sites.yml
##############################################
wordpress_sites:
example.com:
# あなたのCloudflareアカウントは、これらのすべてのドメインを所有している必要があります
site_hosts:
- canonical: example.com
redirects:
- hi.example.com
- hello.another-example.com
ssl:
# SSLを有効にする必要があります
enabled: true
# OCSPスタッピングは無効にする必要があります
stapling_enabled: false
# このロールを使ってCloudflare Origin CA証明書を生成します
provider: cloudflare-origin-ca
# 以下はオプションです
cloudflare_origin_ca:
# 発行された証明書が有効な日数。許可されるオプション: 7, 30, 90, 365 (1年), 730 (2年), 1095 (3年), 5475 (15年)。
# デフォルト: 5475
days: 7
# 証明書としてSubject Alternative Namesに含める完全修飾ドメイン名のリスト。
# デフォルト: すべての正規およびリダイレクトドメイン
# 上記の例では: example.com, hi.example.com, hello.another-example.com
hostnames:
- example.com
- '*.example.com'
- '*.another-example.com'
Typist Techは、あなたの次の素晴らしいWordPressサイトを構築する準備ができています。 私たちに依頼してください!
要件
- Ansible 2.10以降
- Trellis@c86d8a0以降
- Cloudflareアカウント
- Ubuntu 18.04 (Bionic)または20.04 (Focal)
インストール
このロールをgalaxy.yml
に追加します:
- src: TypistTech.trellis-cloudflare-origin-ca # 大文字と小文字を区別!
version: 0.8.0 # 最新バージョンをチェック!
$ trellis galaxy install
を実行します。
Trellisのプレイブックを改造する
このロールをserver.yml
のrole: wordpress-setup
のすぐ後に追加します:
roles:
# ...
- - { role: wordpress-setup, tags: [wordpress, wordpress-setup, letsencrypt] }
+ - { role: wordpress-setup, tags: [wordpress, wordpress-setup, letsencrypt, cloudflare-origin-ca] }
+ - { role: TypistTech.trellis-cloudflare-origin-ca, tags: [cloudflare-origin-ca, wordpress-setup], when: sites_using_cloudflare_origin_ca | count }
# ...
注意: role: wordpress-setup
はcloudflare-origin-ca
でタグ付けされています。
Nginxのインクルード
このロールは、Nginx SSLディレクティブを{{ nginx_path }}/includes.d/{{ item.key }}/cloudflare-origin-ca.conf
にテンプレートします。Trellisはこのファイルをデフォルトでこちらとこちらに含めていますので、特別な操作は必要ありません。
Nginxの子テンプレートを使用している場合は、サーバーブロックに次の行を追加します:
include includes.d/{{ item.key }}/cloudflare-origin-ca.conf;
一般的なエラー
Cloudflare Origin CAを使用しているサイトがありません
明らかに、Cloudflare Origin CAを使用していない場合は、このロールを実行してはいけません。
vault_cloudflare_origin_ca_key
が定義されていません
Cloudflare Origin CAキーをgroup_vars/<environment>/vault.yml
に暗号化してください。詳細はロール変数を参照してください。
example.com
がCloudflare Origin CAを使用しているがOCSPスタッピングが有効です
... あなたはOrigin CAでOCSPレスポンスをスタッピングしようとしています。現在、Origin CAではOCSPはサポートされていないので、Origin CA証明書を使用しているホストのssl_stapingディレクティブを削除する必要があります...
--- Cloudflareサポート
Cloudflare Origin CAはOCSPスタッピングをサポートしていません。Cloudflare Origin CAを使用しているすべてのサイトでOCSPスタッピングを無効にしてください。ロール変数をご覧ください。
key_type
が非推奨です。example.com
から削除してください
誤設定を避けるために、key_type
(ECDSAまたはRSA)とkey_size
(ビット)オプションは非推奨です。v0.8以降、このロールは521ビットECDSAキーのみを生成します。
他の設定でCA証明書を以前に生成した場合:
- サーバーからCA証明書を削除してください
- CloudflareダッシュボードからCA証明書を取り消してください
- サーバーを再プロビジョニングしてください
key_size
が非推奨です。example.com
から削除してください
誤設定を避けるために、key_type
(ECDSAまたはRSA)とkey_size
(ビット)オプションは非推奨です。v0.8以降、このロールは521ビットECDSAキーのみを生成します。
他の設定でCA証明書を以前に生成した場合:
- サーバーからCA証明書を削除してください
- CloudflareダッシュボードからCA証明書を取り消してください
- サーバーを再プロビジョニングしてください
Nginxディレクトリが含まれていません
roots/trellis@f2b8107以降のバージョンを持っていることを確認してください。
400 Bad Request - 必要なSSL証明書が送信されませんでした
症状:
- サーバーがすべてのリクエストに対して「400 Bad Request - 必要なSSL証明書が送信されませんでした」と返します
- Nginxは「クライアントがクライアントリクエストヘッダーを読み取っているときに必要なSSL証明書を送信しませんでした」と記録しています
- Nginxの設定ファイルのどこかに
ssl_verify_client on;
があります wordpress_sites.yml
でclient_cert_url
を使用しています
原因:
あなたの認証されたオリジンプルの設定が正しくありません。
事実:
このロールは認証されたオリジンプルやssl_verify_client
とは関係ありません。
解決策:
- Cloudflare Origin CAの紹介を読む
- 認証されたオリジンプルを読む
- このロールがCloudflare Origin CAであることを理解する
- Cloudflare Origin CAと認証されたオリジンプルが2つの異なるものであることを理解する
- #34を読む
- まだ質問がある場合はCloudflareサポートに連絡する
FAQ
なぜ521ビットECDSAキーのみが許可されているのですか?
あなたがCloudflareで認証されたオリジンプルを設定したいのだと思います。私はECDSAを推奨します。なぜなら、楕円曲線は同じセキュリティを提供し、計算負荷が少ないからです。
ECDSA:より良いインターネットのためのデジタル署名アルゴリズムについてもっと知る 上記の記事でも、ECRYPT IIの推奨によれば、256ビットの楕円曲線キーは、3,248ビットの非対称キーと同じ保護を提供すると述べています。ウェブサイト証明書の典型的なRSAキーは2048ビットです。したがって、256ビットのECDSAを選択するのは良い選択だと思います。
--- Cloudflareサポート、2017年9月
誤設定を避けるために、key_type
(ECDSAまたはRSA)およびkey_size
(ビット)オプションは非推奨です。v0.8以降、このロールは521ビットECDSAキーのみを生成します。
他の設定でCA証明書を以前に生成した場合:
- サーバーからCA証明書を削除してください
- CloudflareダッシュボードからCA証明書を取り消してください
- サーバーを再プロビジョニングしてください
cloudflare_origin_ca_no_log
がtrue
でもCloudflare Origin CAキーがログに表示されるのはなぜですか?
no_log
属性の使用は、ANSIBLE_DEBUG
環境変数を介してAnsible自体をデバッグする際にデータが表示されるのを防ぐものではありません。--- Ansibleのドキュメント
Cloudflare Origin CAは完璧ですか?
すばらしいですね。このような素晴らしいものは他にどこで見つけられますか?
- Typist Techのブログの記事
- Tang RufusのWordPressプラグイン(wp.org)
- Typist TechのGitHubプロフィールにある他のプロジェクト
- Typist Techのニュースレターをフォローする
- Tang RufusのTwitterアカウントをフォローする
- Tang Rufusに依頼して、あなたの次の素晴らしいサイトを構築してください
どこで5つ星のレビューができますか?
ありがとうございます!このプロジェクトを使用している人がいることを知ることが重要です。次のことを考慮してください:
- ツイートで何か良いことを述べて@TangRufusに言及する
- ★ GitHubリポジトリに星を付ける
- 👀 GitHubリポジトリをウォッチする
- チュートリアルやブログ記事を書く
- Typist Techに依頼する
その他
- WP Cloudflare Guard - WordPressとCloudflareファイアウォールを接続し、DNSレベルでWordPressサイトを保護します。危険なIPをブロックするためのファイアウォールルールを自動的に作成します。
- Trellis Cloudflare Origin CAのルート
- Trellis Cloudflare Origin CAのオリジン
- Cloudflare Origin CA
- Trellis SSL
- Trellis Nginx Includes
- Ansible Vault
テストの実行
テストを実行します:
ansible-playbook -vvv -i 'localhost,' --syntax-check tests/test.yml
ansible-lint -vv .
フィードバック
フィードバックをお願いします! このプロジェクトをできるだけ役立つものにしたいです。 問題を報告し、どのような点が好きかや好きでないかを教えてください。またはプロジェクトをフォークしてプルリクエストを送ってください。 小さな問題も重要です。
セキュリティの脆弱性
このプロジェクトでセキュリティの脆弱性を発見した場合は、[email protected]までメールしてください。 すべてのセキュリティの脆弱性に迅速に対応します。
謝辞
Trellis Cloudflare Origin CAは、Typist Techのプロジェクトであり、Tang Rufusが維持しています。フリーランスの開発者です。
特に感謝するのは、このプロジェクトを可能にしたRootsチームのTrellisです。
貢献者のフルリストはこちらで見ることができます。
ライセンス
Trellis Cloudflare Origin CAは、MITライセンスのもとで公開されています。