Node.js https モジュール
httpsこれはNode.jsの組み込みコアモジュールで、HTTPSサーバーとクライアントを作成し、安全なHTTPリクエストとレスポンスを処理するために使用されます。HTTPSは、HTTPに基づいてSSL/TLSプロトコルによって暗号化された安全な転送プロトコルです。
とhttpモジュールと比較すると、httpsモジュールの主な違いは次のとおりです:
- SSL/TLS暗号化通信を使用する
- デフォルトポートは80ではなく443
- サーバーの身元を検証するにはデジタル証明書が必要
コア機能
HTTPSサーバーの作成
例
const https = require('https');
const fs = require('fs');
// 証明書ファイルを読み込む
const options = {
key: fs.readFileSync('server-key.pem'),
cert: fs.readFileSync('server-cert.pem')
};
// HTTPSサーバーを作成する
const server = https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Hello HTTPS World!');
});
server.listen(443, () => {
console.log('HTTPS server running on port 443');
});
const fs = require('fs');
// 証明書ファイルを読み込む
const options = {
key: fs.readFileSync('server-key.pem'),
cert: fs.readFileSync('server-cert.pem')
};
// HTTPSサーバーを作成する
const server = https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Hello HTTPS World!');
});
server.listen(443, () => {
console.log('HTTPS server running on port 443');
});
HTTPSリクエストの発行
例
const https = require('https');
https.get('https://example.com', (res) => {
console.log('ステータスコード:', res.statusCode);
console.log('リクエストヘッダー:', res.headers);
res.on('data', (d) => {
process.stdout.write(d);
});
}).on('error', (e) => {
console.error(e);
});
https.get('https://example.com', (res) => {
console.log('ステータスコード:', res.statusCode);
console.log('リクエストヘッダー:', res.headers);
res.on('data', (d) => {
process.stdout.write(d);
});
}).on('error', (e) => {
console.error(e);
});
重要な概念
SSL/TLS証明書
HTTPSサーバーには次の証明書ファイルが必要です:
key: 秘密鍵ファイル(.key または .pem)cert: 公開鍵証明書(.crt または .pem)- オプション
ca: 認証局(CA)の中間証明書
開発テスト用にOpenSSLを使用して自己署名証明書を生成できます:
例
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
リクエストとレスポンス
httpsモジュールのAPIは、httpモジュールとほぼ同じで、主要なオブジェクトは次のとおりです:
https.Server: HTTPSサーバークラスhttps.request(): HTTPSリクエストの発行https.get(): GETリクエストを発行するショートカットメソッド
実際のアプリケーションシナリオ
- 安全なWebサービス:暗号化転送を必要とするWebアプリケーションの構築
- API呼び出し:サードパーティのHTTPS APIを安全に呼び出す
- マイクロサービス通信:サービス間の安全な通信
- プロキシサーバー:安全なプロキシサービスの構築
セキュリティのベストプラクティス
- 機密データの転送にはHTTPではなく常にHTTPSを使用する
- SSL/TLS証明書を定期的に更新する
- 強力な暗号スイートと安全なプロトコルバージョンを使用する
- Let's Encryptなどの無料の認証局の使用を検討する
- 本番環境では自己署名証明書の使用を避ける
を通じて、httpsモジュールを使用することで、Node.js開発者は安全なネットワークアプリケーションとサービスを簡単に構築でき、データ転送中のプライバシーと完全性を保護できます。