Node.jsのExpressフレームワークを使用してWebサーバーを作成しています。トランスポートはSSLに基づいています。
Https Webサーバーを作成するコードは次のとおりです。
var app = express.createServer({
key: fs.readFileSync('./conf/key.pem'),
cert: fs.readFileSync('./conf/cert.pem')
});
module.exports = app;
質問:エクスプレスで必要なkey.pemとcert.pemを作成する方法は?
必要な2つのファイルは、PEMでエンコードされたSSL証明書と秘密キーです。 PEMでエンコードされた証明書とキーは、-----BEGIN RSA PRIVATE KEY-----
などのように見える開始/終了デリミタ付きのBase64エンコードされたテキストです。
SSL証明書を作成するには、最初に秘密鍵と証明書署名要求、またはCSR(公開鍵も含む)を生成する必要があります。これはさまざまな方法で行うことができますが、OpenSSLでの方法は次のとおりです。
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
これにより、インタラクティブプロンプトを入力して、2048ビットのRSA秘密キーと、プロンプトで入力するために選択したすべての情報を持つCSRを生成します。 (注:共通名は、サイトへのアクセスに使用するドメイン名を入力する場所です。)これを実行したら、通常、このCSRを信頼できる証明書に送信します。機関と彼らがあなたの要求を検証したら、証明書を受け取るでしょう。
証明書が信頼されていることを気にしない場合(通常、開発目的の場合)、自己署名証明書を作成できます。これを行うには、ほぼ同じ行を使用できますが、2つの追加パラメーターを渡します。
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
これにより、投稿したコードスニペットで使用できる証明書(10年間有効)とキーペアが得られます。
この手順に従ってください:
キーと証明書を保存するフォルダーを作成します。
mkdir conf
そのディレクトリに移動します:
cd conf
このca.cnf
ファイルを取得して、設定のショートカットとして使用します。
wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf
この構成を使用して新しい認証局を作成します。
openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem
ca-key.pem
およびca-cert.pem
に認証局があるので、サーバーの秘密鍵を生成しましょう:
openssl genrsa -out key.pem 4096
このserver.cnf
ファイルを取得して、設定のショートカットとして使用します。
wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf
この構成を使用して証明書署名要求を生成します。
openssl req -new -config server.cnf -key key.pem -out csr.pem
リクエストに署名します。
openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem
私はこの手順を見つけました here 、およびこれらの証明書の使用方法に関する詳細情報。