WP Migrate DB Pro (日本語)
HTTPSをローカルに設定するのは難しい作業です。自己署名証明書を提出に取り組めたとしても、ブラウザのプライバシーエラーが発生します。この記事では、HTTPSサイトを問題なくローカルで実行できるように、ローカルサーバー用に独自の認証局を作成する方法について説明します。
HTTPSをローカルに使用する理由
ローカルで通常のHTTPを使用しますか?本番サイトがHTTPSのみであり、通常のHTTPでローカルに開発している場合、開発環境と本番環境はそれほど類似していないためです。たとえば、このサイトの開発環境(deliciousbrains.com)は、Mac上のVMware仮想マシン(VM)でUbuntuサーバーとして実行されます。本番サイトは、ほぼ同じ構成のLinodeで実行されているUbuntuサーバーです。
開発環境で本番環境を可能な限り厳密にミラーリングする必要があります。
そうでない場合は、さらに問題が発生します。開発に表示されなかった本番環境に表示されます。本番サイトがHTTPSのみの場合にHTTPを実行することは、間違いなく不必要なリスクです。
ただし、SSL証明書を処理するツールを使用していない場合は、ローカルサーバーでSSL証明書を機能させようとするのは面倒です。 Valetが好きです。
HTTPSサイトをローカルで実行しようとしたことがあれば、Chromeで次のようなものを見たことがあるでしょう。
回避策は、自己署名証明書を作成してそれを使用することでした。 MAMP Proはあなたのためにこれを行い、何年もの間私の頼みの綱でした。残念ながら、それはもはや不可能です。最新のアプローチは、独自の認証局(CA)になることです!
仕組み
VerisignやGoDaddyなどのCAにSSL証明書を要求するには、証明書署名を送信します。リクエスト(CSR)を行うと、ルート証明書と秘密鍵を使用して署名したことと引き換えに証明書が提供されます。すべてのブラウザにはVerisignのルート証明書のコピーがある(またはオペレーティングシステムからのコピーにアクセスする)ため、ブラウザは証明書が信頼できるCAによって署名されていることを確認できます。
そのため、自己署名を生成すると署名された証明書は、ブラウザが信頼していません。自己署名です。 CAによって署名されていません。ただし、独自のルート証明書と秘密鍵を生成することはできます。次に、所有するすべてのデバイスにルート証明書を1回だけ追加すると、生成して署名するすべての証明書が本質的に信頼されます。
(小さな)認証局になる
認証局になるために必要なファイルを生成するのがいかに簡単であるかは、ちょっとばかげています。 2つのコマンドしか必要ありません。まず、秘密鍵を生成します。
パスフレーズの入力を求められますが、スキップせずに安全に保管することをお勧めします。パスフレーズは、秘密鍵を取得した人が自分のルート証明書を生成するのを防ぎます。出力は次のようになります。
次にルート証明書を生成します:
秘密鍵のパスフレーズの入力を求められます(あなたが選んだもの)そしてたくさんの質問。これらの質問への回答はそれほど重要ではありません。証明書を見ると表示されますが、ほとんど表示されません。共通名は、他の証明書のリストでルート証明書として認識できるものにすることをお勧めします。重要なのはそれだけです。
これで、myCA.key(秘密鍵)とmyCA.pem(ルート証明書)の2つのファイルができました。 。
🎉おめでとうございます、あなたはCAになりました。
実際のCAになるには、世界中のすべてのデバイスでルート証明書を取得する必要があります。所有しているものから始めましょう。
ルート証明書のインストール
HTTPSサイトにアクセスするラップトップ、デスクトップ、タブレット、電話にルート証明書を追加する必要があります。 。これは少し面倒かもしれませんが、良いニュースは、一度だけ実行する必要があるということです。ルート証明書が各デバイスにインストールされると、有効期限が切れるまで有効です。
macOSキーチェーンへのルート証明書の追加
CLI経由
UI経由
- macOSキーチェーンアプリを開きます
- ファイルに移動>アイテムのインポート…
- 秘密鍵ファイル(myCA.pemなど)を選択します
- 上記の共通名として回答したものを検索します
- リストでルート証明書をダブルクリックします
- [信頼]セクションを展開します
- [この証明書を使用する場合:選択]ボックスを[常に]に変更します信頼」
- 証明書ウィンドウを閉じる
- パスワードの入力(または指のスキャン)を求められますが、
- 🎉祝いましょう!
iOSへのルート証明書の追加
iOSデバイスにルート証明書を追加する場合は、次の手順に従って簡単に追加できます。
- iOSデバイスでアクセスできるようにルート証明書を自分宛てに電子メールで送信します
- iOSデバイスで電子メールの添付ファイルをクリックします
- 設定アプリに移動し、上部にある[ダウンロードしたプロファイル]をクリックします
- 右上の[インストール]をクリックします
- インストールしたら、閉じるをクリックしてメインの[設定]ページに戻ります
- 「一般」に移動>「バージョン情報」
- 一番下までスクロールして、「証明書の信頼設定」をクリックします
- [ルート証明書の完全な信頼を有効にする]でルート証明書を有効にします
CA署名付き証明書の作成開発サイト
これですべてのデバイスのCAになったので、HTTPSを必要とする新しい開発サイトの証明書に署名できます。まず、秘密鍵を作成します:
次にCSRを作成します:
上記と同じ質問がすべて表示されます。繰り返しになりますが、回答は重要ではありません。実際、この証明書は他のリストの横に表示されないため、それほど重要ではありません。
次に、証明書を作成します。 CSR、CA秘密鍵、CA証明書、および構成ファイルを使用しますが、最初にその構成ファイルを作成する必要があります。
サブジェクト代替名(SAN)拡張子を定義するには、構成ファイルが必要です。これは、証明書のこのセクション(つまり拡張子)で定義されています:
構成ファイル(dev.deliciousbrains.com)。 ext)には次のものが含まれていました:
openssl x509
コマンドを実行します。これは、私が理解していることから、ルート証明書と秘密鍵を使用して署名を行うには、x509コマンドが必要です。 Stack Overflowでこの設定ファイルの例を見つけましたが、機能しているようです。
これで、コマンドを実行して証明書を作成します。
これで、秘密鍵を使用してWebサーバーを設定できます。と証明書。 Linuxサーバーを実行している場合は、Ubuntu 20.04シリーズにWordPressをインストールするの手順を使用できます。MAMPを使用している場合は、UIを使用して証明書とキーファイルを選択できます。
残念ながら、MAMP(バージョン5.7でテスト済み)はCAでSSL証明書を作成しないため、今のところ手動の方法を使用する必要があります。
他の開発サイトの場合、証明書作成のこの最後の部分を繰り返すだけで、サイトごとに新しいCAを作成する必要はありません。
シェルスクリプト
さらに高速にするために、自分の目的に合わせて変更できる便利なシェルスクリプトを次に示します。
結論
これで、自分のローカル証明書になる方法がわかりました。ローカルSSL証明書に署名し、ローカルサイトでHTTPSを使用する権限。これにより、Chromeでの恐ろしい「接続はプライベートではありません」というメッセージが削除されることを願っています。