ホームページ >ウェブフロントエンド >jsチュートリアル >Node.jsを使用して自己署名httpsサーバーを構成する方法

Node.jsを使用して自己署名httpsサーバーを構成する方法

一个新手
一个新手オリジナル
2017-09-07 15:19:421597ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。