1. はじめに あなたのウェブサイトはまだインターネット上に公開されたままですか?ここでは、HTTPS の無料バージョンを構築します。無料、無料、無料。重要なので 3 回言います。 ハイパーテキスト転送プロトコル (HTTP) は、Web ブラウザと Web サイト サーバーの間で情報を転送するために使用されます。HTTP プロトコルはコンテンツをプレーン テキストで送信し、いかなる形式のデータ暗号化も提供しません。攻撃者が Web ブラウザと Web サイト サーバーの間の送信メッセージを傍受した場合、攻撃者はその中の情報を直接読み取ることができます。 したがって、HTTP プロトコルは、クレジットカード番号、パスワード、その他の支払い情報などの機密情報を送信するのには適していません。 HTTP プロトコルのこの欠陥を解決するには、別のプロトコル、Secure Sockets Layer (Hypertext Transfer Protocol) HTTPS が必要です。データ転送のセキュリティのために、HTTPS は HTTP に基づいて SSL プロトコルを追加します。SSL は証明書に依存してサーバーの ID を検証し、ブラウザーとサーバー間の通信を暗号化します。 2. HTTPSの利点 HTTPS は絶対に安全というわけではありませんが、ルート証明書と暗号化アルゴリズムを管理する組織は中間者攻撃を実行することもできます。ただし、HTTPS は現在のアーキテクチャでは依然として最も安全なソリューションであり、次のような主な利点があります。 (1)HTTPSプロトコルを使用すると、ユーザーとサーバーを認証し、データが正しいクライアントとサーバーに送信されることを保証できます。 (2)HTTPSプロトコルは、SSL+HTTPプロトコルによって構築されたネットワークプロトコルであり、暗号化された送信とID認証を実行できます。HTTPプロトコルよりも安全で、送信中にデータが盗まれたり変更されたりすることを防止できるため、データの整合性が保証されます。 (3)HTTPSは現在のアーキテクチャでは最も安全なソリューションです。絶対的に安全というわけではありませんが、中間者攻撃のコストは大幅に増加します。 (4)Googleは2014年8月に検索エンジンのアルゴリズムを調整し、「HTTPS暗号化を使用しているウェブサイトは、同等のHTTPウェブサイトよりも検索結果の上位に表示される」と述べました。 3. HTTPSのデメリット HTTPS には大きな利点がありますが、いくつかの欠点も残っています。 (1)HTTPSプロトコルのハンドシェイクフェーズは時間がかかるため、ページの読み込み時間が約50%長くなり、消費電力が10%から20%増加します。 (2)HTTPS接続キャッシュはHTTPほど効率的ではないため、データのオーバーヘッドと電力消費が増加し、既存のセキュリティ対策にも影響を及ぼします。 (3)SSL証明書は有料です。証明書の性能が高ければ高いほど、料金も高くなります。個人のウェブサイトや小規模なウェブサイトでは、一般的にSSL証明書を使用する必要はありません。 (4)SSL証明書は通常、IPアドレスにバインドする必要があります。複数のドメイン名を同じIPアドレスにバインドすることはできません。IPv4リソースはこのような消費をサポートできません。 (5)HTTPSプロトコルの暗号化範囲も比較的限定されており、ハッカー攻撃、サービス拒否攻撃、サーバーハイジャックなどにはほとんど効果がありません。最も重要なのは、SSL 証明書のクレジット チェーン システムは安全ではなく、特に一部の国が CA ルート証明書を制御できる場合、中間者攻撃が依然として実行可能であることです。 4. certbotをダウンロードする ここからgitを使ってダウンロードしてください。まだgitをインストールしていない場合は、インストール方法を確認してください。 ディレクトリを変更する /usr/local に移動します Gitリポジトリをクローンする git クローン https://github.com/certbot/certbot.git クローンが完了すると、certbotディレクトリが/usr/loca/に表示されます。 5. certbot を表示する certbotディレクトリに変更する cd /usr/local/certbot ディレクトリがこのようになっている場合、インストールは成功したことを意味します。 certbot の一般的なコマンド 公式ドキュメントを見る 6. nginxをインストールする nginxのインストールドキュメントを参照してください 7. https証明書を申請する 現在の証明書を表示 ./certbot-auto 証明書 最初の実行ではいくつかの依存関係がインストールされます。途中で確認プロンプトが表示されます。Y と入力します。 証明書の申請を開始します (証明書の有効期間は 3 か月で、有効期限が切れると再申請する必要があります) 方法 1: DNS 検証を使用します。この方法では、ドメイン名を設定できる必要があります。個人的にはこの方法が気に入っています。/certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d your domain name --manual --preferred-challenges dns-01 certonly たとえば、次のようになります。 ワイルドカードドメイン名の設定 次のようにコードをコピーします。 ./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d *.nl166.com --manual --preferred-challenges dns-01 certonly 特定のドメイン名を設定する 次のようにコードをコピーします。 ./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d api.nl166.com --manual --preferred-challenges dns-01 certonly セカンダリワイルドカードドメイン名の設定 次のようにコードをコピーします。 ./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d *.api.nl166.com --manual --preferred-challenges dns-01 certonly 上の画像に示すように、初めてメールアドレスを入力するよう求められます。必要に応じて入力してください。その後、メールが送信されるので、クリックしてメールアドレスを確認する必要があります。そのため、実際のメールアドレスを入力し、必要に応じて確認してください。確認しないと、先に進むことができません。 次に、ドメイン名を確認し、必要に応じて TXT レコードを解決するように求められます。 保存して確認し、サーバーに戻って確認します 上記の2つのファイルは、httpsを構成するために使用される証明書です。 方法2: プラグインを使用する まず当局者が何を言ったか見てみましょう ここではnginxを使用します(適用後、nginxが自動的に再起動されます)この方法ではワイルドカードドメイン名を構成することはできず、1つずつ追加することしかできません。 ./certbot-auto --nginx -d api2.nl166.com 上記のエラーを解決するには、/usr/local/nginxをnginxの実際のインストール場所に置き換えてLNMPをインストールする必要があることに注意してください。 ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx ln -s /usr/local/nginx/conf/ /etc/nginx アプリケーションを再度実行する HTTP トラフィックを HTTPS にリダイレクトし、HTTP アクセスを削除するかどうかを選択するよう求められます。必要に応じて選択できます。ここでは選択をキャンセルします (実際には、この手順は直接無視できます。テスト後、この手順を選択する前に URL https にアクセスできます)。 クエリ手順をスキップする場合は、certonly を追加できます。この方法では、他の操作は実行されずに証明書のみが生成さます。証明書の構成は、次のように手動で追加する必要があります。 ./certbot-auto certonly --nginx -d api2.nl166.com 上図のように、ポート 443 を listen するサーバーを設定すると、対応するドメイン名の設定ファイルが自動的に検索され、次の 2 行が追加されます。また、フォーマットが乱れ、} 番号のインデントが上記の { のインデントに対応していませんが、機能には影響しません。nginx のバージョンに応じて ssl on を追加するかどうかはわかりません。 私のバージョンの nginx ではこれが必要ないため、下位バージョンでは https アクセスを有効にするために ssl on; を追加する必要があります。 ドメイン名の443ポートが監視されていない場合は、次の場所に情報が追加されます 他の方法はご自身で探してみてください 8. nginx を https をサポートするように設定 # HTTPS サーバー # サーバー{ 443 ssl を聴く; サーバー名 api2.nl166.com; ルート /data/web/im.nl166.com; 位置 / { インデックスindex.php; } #auth_basic "こんにちは世界"; #auth_basic_user_file /usr/local/nginx/conf/auth/nl166.auth; 場所 ~ \.php$ { fastcgi_params を含めます。 fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_index インデックス.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } 場所 ~ .*.(svn|git|cvs) { すべてを否定する; } ssl_certificate /etc/letsencrypt/live/api2.nl166.com/fullchain.pem; # Certbot によって管理されています ssl_certificate_key /etc/letsencrypt/live/api2.nl166.com/privkey.pem; # Certbot によって管理されています } 以前のバージョンでは、https アクセスを有効にするために ssl on; を追加する必要があります。 9. シェルスクリプトとスケジュールされたタスクを使用して証明書を定期的に更新する 注意: 操作回数の制限を回避するには、--dry-run パラメータを追加します。実行が正しく行われたら、これを削除して実際の更新操作を実行します。 方法1による更新 ドメイン名は /etc/letsencrypt/renewal/ ディレクトリ内の ****.conf です。**** は記入したいドメイン名です。例えば私が生成したときは *.nl166.com でしたが、実際に生成すると * はありませんでした。 /home/certbot-sh/au.sh DNSを更新するための独自のスクリプトに置き換えます 次のように: 次のようにコードをコピーします。 ./certbot-auto 更新 --cert-name nl166.com --manual-auth-hook /data/shell/crontab/auto_update_httpscert.sh --dry-run 更新コマンドをファイルに入れます。/data/shell/crontab/auto_update_httpscert.shに入れました。内容は以下のとおりです。元のauto_update_httpscert.shを/data/shell/cnl_update_httpscert.shに変更します。 システムのスケジュールされたタスクを追加する crontab -e #毎週日曜日の午前5時にhttps証明書を更新します 0 5 * * 0 sh /data/shell/crontab/auto_update_httpscert.sh 方法2の更新方法は次のとおりです。 ./certbot-auto certonly --renew-by-default --nginx -d api2.nl166.com --dry-run システムスケジュールタスク操作参照方法1の追加 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL でグループ化した後、各グループの最大値を取得する詳細な例
>>: Nest.js パラメータ検証とカスタム戻りデータ形式の詳細な説明
目次Vuex は単一の状態ツリーを使用するため、すべてのアプリケーション状態が比較的大きなオブジェク...
目次VMware バープスイート1. 仮想マシンイメージとVMwareのインストールと使用2. 仮想...
目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...
Centos7 のインストール時に VmWare がインターネットにアクセスできない場合はどうすれば...
この記事は Linux centos8 をベースにして、docker をインストールし、イメージをプ...
1. Vueとは何かVue は、ユーザー ページを構築するためのプログレッシブ フレームワークです。...
必要な環境をインストールする1. gccのインストールnginx をインストールするには、公式サイト...
virtualenv は、分離された Python 仮想環境を作成するためのツールです。独立したディ...
vue3 が誕生してからかなり時間が経ち、筆者も最近になって vue3 を学び始めました。 vue2...
LAN 内のマシンは外部ネットワークにアクセスできますが、外部ネットワークは内部ネットワークにアクセ...
目次MySQL Shell import_table データのインポート1. import_tabl...
mysql が誤ってデータを削除しました削除ステートメントを使用して誤ってデータ行を削除する誤ってデ...
1. 問題の説明セキュリティ上の理由から、新しく構築されたサーバー クラスターでは、指定されたポート...
ソフトウェア バージョンとプラットフォーム: MySQL-5.7.17-winx64、win7 Ho...
この記事では、画像ウォーターフォールフローを実現するためのJSの具体的なコードを参考までに共有します...