この記事では、Express.jsサーバーを保護する方法を説明します。Let'sEncyptExtermatesを使用してHTTPSを使用し、HSTSとより強力なDiffie-Hellmanパラメーターでセキュリティをさらに強化します。
今日のデジタル景観では、HTTPSは交渉不可です。 ユーザー、Googleランキングファクター、およびブラウザがそれを欠くサイトを積極的に強調することが期待されています。このチュートリアルでは、Express.jsアプリケーションにLet's Encrypt証明書を追加することを示しています。 ただし、クライアント側のセキュリティも同様に不可欠です。デフォルトで有効にされていない場合でも、外部サーバーへの暗号化された接続を強制することを検討します。
キーテイクアウト:
HTTPSは、2020年以降のWebサイトセキュリティにとって重要であり、認証、プライバシー、機密性、およびデータの整合性を提供します。 これは、Googleランキング要因とユーザーの期待です node.jsはデフォルトでhttpになりますが、
モジュールは安全なクライアント通信を有効にします。これには、SSL証明書が必要であり、簡単に入手でき、暗号化されていません。https
httpsどこでも:ssl/tls tcp
ip
TLS 1.3は最新バージョンであり、SSL 3.0の成功します(ただし、相互運用できません)。 証明書チェーン、キー交換用の公開キー暗号化、およびデータ転送に対称的な暗号化の3つの暗号化されたチャネルを使用します。 SHA2またはより強いハッシュアルゴリズムが推奨されます(SHA1は時代遅れです)。 データの増加は、オンラインセキュリティの強化に対する燃料ユーザーの需要に違反します。 EFFのHTTPS Everywhere Browser拡張機能は、可能な場合は暗号化を強制します。これには、部分的なHTTPSサポートを備えたサイトのリクエストの書き換えやHTTPを完全にブロックするなど。
基本的なコミュニケーション:
証明書の検証には、署名、有効期限、信頼できるルートチェーン、および取り消しステータスの確認が含まれます。 信頼できる証明書当局(CAS)発行証明書。 CAの妥協は、すべての証明書を取り消します。 HTTPSハンドシェイクシーケンス:サーバーからのクライアントの初期化、証明書、およびキー交換メッセージ、クライアントキーエクスチェンジと暗号仕様、サーバーの確認、およびハンドシェイクの閉鎖。
このシーケンスはhttpに依存しません。 HTTPSはソケット処理のみを変更します。 httpリクエストは残りますが、ソケットはコンテンツ(ヘッダーとボディ)を暗号化します。
Express.jsでのhttps実装:
node.jsは、安全な通信のために
モジュールを使用します。 その使用量は、モジュールを反映しています:
生成された証明書パス(以下で説明します)にhttps
およびhttp
を置き換えます。
const https = require("https"), fs = require("fs"); const options = { key: fs.readFileSync("/srv/www/keys/my-site-key.pem"), cert: fs.readFileSync("/srv/www/keys/chain.pem") }; const app = express(); app.use((req, res) => { res.writeHead(200); res.end("hello world\n"); }); app.listen(8000); https.createServer(options, app).listen(8080);
/srv/www/keys/my-site-key.pem
/srv/www/keys/chain.pem
CERTBOT AUTORATES証明書の生成と管理を暗号化しましょう。 certbotをインストールします(命令はOSによって異なります。この例ではubuntuを使用します):
プラグインは、証明書の生成と検証を簡素化します。 実行:
メールアドレスを提供します。 出力は、秘密キーおよび証明書ファイルへのパスを表示します。これらを上の
sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository universe sudo add-apt-repository ppa:certbot/certbot sudo apt-get update
certonly --webroot
certbot certonly --webroot -w /var/www/example/ -d www.example.com -d example.com
options
http Strict Transport Security(HSTS):ヘルメットミドルウェアを使用してください:
const helmet = require("helmet"); // ... app.use(helmet());
openssl dhparam -out /var/www/example/sslcert/dh-strong.pem 2048
dhparam
options
httpsが不可欠です。 node.jsは、安全なWebアプリケーション用の堅牢なSSL/TLSオプションを提供します。 暗号化は証明書管理を簡素化しますが、HSTSとより強力なDHパラメーターはセキュリティをさらに強化します。
FAQSセクションは簡潔に省略されていますが、提供された情報は元のテキストの中心的な側面をカバーしています。
以上がnode.jsでSSL/TLSを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。