ホームページ > 記事 > ウェブフロントエンド > Node.jsを使用して自己署名httpsサーバーを構成する方法
Express を使用して nodejs でフレームワークを構築することは非常に簡単で便利であると言えますが、一般に http サーバーはデフォルトで作成され、http プロトコルを通じてのみアクセスできることを意味します。最近では https が開発のトレンドになっており、時代の流れに従う必要があります。この記事では、自己署名方式を使用して証明書を作成し、次に Express フレームワークを使用して https サーバーを構築し、最後にブラウザーまたはクライアントが https プロトコルを使用してアクセスできるようにします。
まず、証明書ファイルを生成する必要があります:
(1) 秘密鍵キー ファイルを生成します (以下のパスは、保存したいファイル パスの場所を示します)
openssl genrsa 1024 > /pathway/private.pem
(2) プライベート キーを通じて CSR 証明書署名を生成します。上記で生成された鍵ファイル
openssl req -new -key /pathway/private.pem -out csr.pem
(3) 上記の秘密鍵ファイルとCSR証明書の署名により証明書ファイルを生成します
openssl x509 -req -days 365 -in csr.pem -signkey /pathway/private.pem -out /pathway/file.crt
この時に生成される3つのファイルは以下の通りです:
この時、これら3つのファイルをたとえば、nodejs プロジェクト ディレクトリに直接アクセスします。プロジェクトのルート ディレクトリに新しい証明書フォルダーを作成し、次の 3 つのファイルを配置します。
上記の手順を完了したら、プロジェクトのスタートアップ ファイルを変更します。私のスタートアップ ファイルは app.js です。 、または他の人がserver.jsを実装しています。次のコードも同じです:
var express = require('express'); // 项目服务端使用express框架 var app = express(); var path = require('path'); var fs = require('fs'); //使用nodejs自带的http、https模块 var http = require('http'); var https = require('https'); //根据项目的路径导入生成的证书文件 var privateKey = fs.readFileSync(path.join(__dirname, './certificate/private.pem'), 'utf8'); var certificate = fs.readFileSync(path.join(__dirname, './certificate/file.crt'), 'utf8'); var credentials = {key: privateKey, cert: certificate}; var httpServer = http.createServer(app); var httpsServer = https.createServer(credentials, app); //可以分别设置http、https的访问端口号 var PORT = 8000; var SSLPORT = 8001; //创建http服务器 httpServer.listen(PORT, function() { console.log('HTTP Server is running on: http://localhost:%s', PORT); }); //创建https服务器 httpsServer.listen(SSLPORT, function() { console.log('HTTPS Server is running on: https://localhost:%s', SSLPORT); }); //可以根据请求判断是http还是https app.get('/', function (req, res) { if(req.protocol === 'https') { res.status(200).send('This is https visit!'); } else { res.status(200).send('This is http visit!'); } });
コードの実装が完了したら、app.jsスクリプトを開始します。または、「node app.js」コマンドを使用します。他の IDE で実行し、ブラウザでアクセスします (Express はシステムの組み込みモジュールではないことに注意してください。npm 経由でインストールする必要があります):
https を使用してサーバーにアクセスしたことがわかります。ですが、Chrome ブラウザには赤色の「安全ではありません」と表示されます。これは、この証明書が当社によって作成されており、サードパーティ機関によって検証されていないためです。そのため、警告メッセージが表示されます。認定証の申請方法については次回のブログで紹介します。
Chrome ブラウザで開発者モードを開くと、以下に示すように、[セキュリティ] ページで現在のページの証明書情報が表示されます:
[証明書の表示] をクリックして、証明書の詳細を確認します:
詳細を展開すると、証明書の作成時に入力したさまざまな証明書情報が表示されます。
同時に、Postman を使用してクライアントのリクエストをシミュレートすることもできます (実際の開発では、サーバーの生徒が証明書をクライアントの生徒に送信でき、簡単な設定後に https 通信を実現できます)。
以上がNode.jsを使用して自己署名httpsサーバーを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。