背景 現在、会社のプロジェクトは、フロントエンドとバックエンドが分離された方法で開発されています。新しい開発要件やバグ修正のために、フロントエンドをローカル開発環境に直接接続してデバッグしたい場合がありますが、フロントエンドのコードがないため、フロントエンドによって展開されたテスト環境を介してのみテストできます。最も簡単な方法は、ホストを直接変更して、バックエンドテスト環境のドメイン名をローカルIPにポイントすることです。これは、HTTPプロトコルサービスでは非常に簡単に実行できますが、会社のテスト環境はすべてHTTPSであり、ローカルサービスはHTTPプロトコルです。ホストを変更しても、プロトコルが異なるためリクエストは失敗するため、ローカルサービスをHTTPSにアップグレードする必要があります。 プラン 実は、Springboot自体はHTTPSをサポートしています(howto-configure-ssl)が、これにはプロジェクトコードの変更が必要であり、あまりエレガントではありません。そこで、 証明書の発行 まず、nginx の SSL 構成用の証明書セットを生成する必要があります。openssl ツール ルート証明書の生成 # RSA秘密鍵を生成する openssl genrsa -out root.key 2048 # 秘密鍵を使用してルート証明書を生成します openssl req -sha256 -new -x509 -days 365 -key root.key -out root.crt \ -subj "/C=CN/ST=GD/L=SZ/O=lee/OU=work/CN=fakerRoot" サーバー証明書の生成 # RSA秘密鍵を生成する openssl genrsa -out server.key 2048 # SAN拡張子を持つ証明書署名要求ファイルを生成する openssl req -new \ -sha256 \ -key サーバー.キー \ -subj "/C=CN/ST=GD/L=SZ/O=lee/OU=work/CN=xxx.com" \ -reqexts SAN \ -config <(cat /etc/pki/tls/openssl.cnf \ <(printf "[SAN]\nsubjectAltName=DNS:*.xxx.com,DNS:*.test.xxx.com")) \ -out サーバー.csr # 以前に生成したルート証明書を使用して発行します openssl ca -in server.csr \ -md sha256 \ -keyfile ルート.key \ -cert ルート.crt \ -拡張機能SAN \ -config <(cat /etc/pki/tls/openssl.cnf \ <(printf "[SAN]\nsubjectAltName=DNS:xxx.com,DNS:*.test.xxx.com")) \ -out サーバー.crt これにより、3 つの重要なファイルが作成されます。
注: 生成されたサーバー証明書のドメイン名は、テスト環境がアクセスするドメイン名をサポートしている必要があります。そうでない場合、ブラウザは証明書が安全ではないというメッセージを表示します。 nginx の設定 便宜上、 nginx.conf サーバー{ 443 ssl を聴く; サーバー名_; ssl_certificate "/usr/local/nginx/ssl/server.pem"; ssl_certificate_key "/usr/local/nginx/ssl/server.key"; 位置 / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header ホスト $http_host; proxy_set_header X-NginX-Proxy が true である; proxy_set_header アップグレード $http_upgrade; proxy_set_header 接続「アップグレード」; プロキシパス http://127.0.0.1:3000; proxy_redirect オフ; プロキシ_http_バージョン 1.1; } } 起動する docker run -d --name https -p 443:443 -v ~/forword/ssl:/usr/local/nginx/ssl -v ~/forword/config/nginx.conf:/etc/nginx/conf.d/default.conf nginx nginx 構成および証明書関連ファイルを対応するディレクトリにマウントし、ポート 443 を公開して、サービス開始後に https 経由でローカル開発環境にアクセスできるようにします。 ルート証明書をインストールする サービス証明書は自己署名されており、ブラウザによって信頼されないため、 Chromeブラウザを開き、「設定」->「詳細設定」->「証明書の管理」 信頼されたルート証明機関 -> インポート 以前に生成したルート証明書 ホストの変更 デバッグが必要な場合は、ローカル サービスを起動し、ホストでテストするドメイン名を 追記 実際、この記事では 2 つの解決策が紹介されています。実際には、中間者攻撃である 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySql 8.0.16 バージョンのインストールでは、「UTF8B3」ではなく「UTF8B4」が使用されるように求められます。
>>: MySQL DISTINCTの基本実装原理の詳細な説明
1: dockerにmongodbをインストールするステップ1: dockerにmongodbをイン...
目次Linux MySQL 5.5 が MySQL 5.7 にアップグレードされました1. mysq...
CocosCreator バージョン: 2.3.4 Cocos には List コンポーネントがない...
質問Docker が elasticsearch をインストールして起動するときにメモリが不足するシ...
現在、インターネット上でウェブサイトをコピーすることは非常に一般的です。では、他人が私たちのウェブサ...
この記事の例では、WeChatアプレットの水平スクロールと垂直スクロールを実現するための具体的なコー...
序文Docker イメージは Dockerfile といくつかの必要な依存関係で構成され、Docke...
有線ネットワーク: イーサネット 無線ネットワーク: 4G、WiFi、Bluetooth、5G 概要...
特殊記号名前付きエンティティ10進数エンコード特殊記号名前付きエンティティ10進数エンコードアルファ...
MySQL 8 は、NoSQL、JSON などのサポートなど、まったく新しいエクスペリエンスをもたら...
目次この期間の目標1. 関数の実装1.1 構造層1.2 スタイルレイヤー1.3 行動層1.3.1 フ...
セレクタのグループ化h2 要素と段落の両方を灰色にしたいとします。これを行う最も簡単な方法は、次のス...
目次1. スコープはさまざまな方法で表現されます2. 変動昇進と非昇進の違い3. 一時的なデッドゾー...
この記事では、docker 経由で Jenkins+Maven+SVN+Tomcat をデプロイし、...
展開環境:インストールバージョン Red Hat Cent 7.0 MYSQL バージョン 8.0....