Express.js SSL 設定ガイド
SSL 証明書を Express.js サーバーに設定する方法 (日本語)
Node.js、Express、SSL 証明書
Node.js と Express.js を使ってウェブサーバーを構築する場合、安全な通信を実現するために SSL 証明書を設定する必要があります。SSL 証明書は、サーバーのアイデンティティを検証し、データの暗号化を提供します。
SSL 証明書を取得する
- 自己署名証明書を作成する
開発環境やテスト環境で使用できますが、ブラウザによっては警告が表示されることがあります。 - 信頼できる証明機関から購入する
Let's Encrypt、Comodo、GoDaddy などから購入できます。
Node.js と Express.js をインストールする
npm install express
サーバーを作成する
const express = require('express');
const https = require('https');
const app = express();
const port = 443; // HTTPS ポート
// SSL 証明書を読み込む
const privateKey = fs.readFileSync('your-private-key.key', 'utf8');
const certificate = fs.readFileSync('your-certificate.crt', 'utf8');
// HTTPS サーバーを作成する
const httpsServer = https.createServer({
key: privateKey,
cert: certificate
}, app);
// ルートエンドポイントを定義する
app.get('/', (req, res) => {
res.send('Hello, world!');
});
// サーバーを起動する
httpsServer.listen(port, () => {
console.log(`HTTPS server listening on port ${port}`);
});
証明書ファイルを配置する
your-private-key.key
とyour-certificate.crt
を適切なディレクトリに配置します。
- 上のコードを実行してサーバーを起動します。
注意
- セキュリティを確保するために、証明書ファイルは適切に保護してください。
- 証明書ファイルのパスは、実際のファイルの場所に合わせて変更してください。
- 自己署名証明書を使用する場合、ブラウザが警告を表示することがあります。信頼できる証明機関から購入した証明書を使用することを推奨します。
npm install express
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
const port = 443; // HTTPS ポート
// SSL 証明書を読み込む
const privateKey = fs.readFileSync('your-private-key.key', 'utf8');
const certificate = fs.readFileSync('your-certificate.crt', 'utf8');
// HTTPS サーバーを作成する
const httpsServer = https.createServer({
key: privateKey,
cert: certificate
}, app);
// ルートエンドポイントを定義する
app.get('/', (req, res) => {
res.send('Hello, world!');
});
// サーバーを起動する
httpsServer.listen(port, () => {
console.log(`HTTPS server listening on port ${port}`);
});
解説
httpsServer.listen
を使用してサーバーを起動します。- ルートエンドポイントを定義して、ブラウザに "Hello, world!" を表示します。
https.createServer
を使用して HTTPS サーバーを作成します。fs.readFileSync
を使用して SSL 証明書を読み込みます。app
オブジェクトを作成して Express.js サーバーを初期化します。express
モジュールとhttps
モジュールをインポートします。
helmet ミドルウェアを使用する
helmet.contentSecurityPolicy()
やhelmet.xssFilter()
などのメソッドを使用して、セキュリティを強化することができます。helmet
は、さまざまなセキュリティヘッダーを設定するためのミドルウェアです。
const express = require('express');
const https = require('https');
const helmet = require('helmet');
// ... (他のコード)
app.use(helmet());
http2 モジュールを使用する
- HTTP/2 は、より効率的で高速な通信を実現します。
http2
は、HTTP/2 プロトコルを使用するためのモジュールです。
const express = require('express');
const http2 = require('http2');
const fs = require('fs');
// ... (他のコード)
const server = http2.createSecureServer({
key: fs.readFileSync('your-private-key.key'),
cert: fs.readFileSync('your-certificate.crt')
}, app);
// ... (他のコード)
pm2 プロセスマネージャーを使用する
pm2
を使用して、サーバーをデプロイし、監視することができます。pm2
は、Node.js アプリケーションの管理ツールです。
pm2 start your-app.js
クラウドプラットフォームを利用する
- クラウドプラットフォームを利用することで、証明書の管理や更新が容易になります。
- AWS、Google Cloud Platform、Heroku などのクラウドプラットフォームでは、SSL 証明書の設定をサポートしています。
pm2
プロセスマネージャーを使用することで、サーバーの管理を簡素化することができます。http2
モジュールを使用することで、HTTP/2 プロトコルを利用し、通信を高速化することができます。helmet
ミドルウェアを使用することで、セキュリティヘッダーを設定し、アプリケーションを保護することができます。
node.js express ssl-certificate