web-dev-qa-db-ja.com

https Webサーバーの.pemファイルを作成する方法

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を作成する方法は?

83
Jeffrey

必要な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年間有効)とキーペアが得られます。

183
Paul Kehrer

この手順に従ってください:

  1. キーと証明書を保存するフォルダーを作成します。

    mkdir conf


  1. そのディレクトリに移動します:

    cd conf


  1. このca.cnfファイルを取得して、設定のショートカットとして使用します。

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf


  1. この構成を使用して新しい認証局を作成します。

    openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem


  1. ca-key.pemおよびca-cert.pemに認証局があるので、サーバーの秘密鍵を生成しましょう:

    openssl genrsa -out key.pem 4096


  1. このserver.cnfファイルを取得して、設定のショートカットとして使用します。

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf


  1. この構成を使用して証明書署名要求を生成します。

    openssl req -new -config server.cnf -key key.pem -out csr.pem


  1. リクエストに署名します。

    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 、およびこれらの証明書の使用方法に関する詳細情報。

11
John Slegers