1. ホーム
  2. node.js

[解決済み] ローカルホスト用の信頼できる自己署名入りSSL証明書を作成する(Express/Nodeで使用するため)

2022-04-24 17:45:04

質問

ローカルホストで使用するための自己署名証明書を作成するための様々な指示に従おうとしています。命令のほとんどはIISのためのもののようですが、私はNodejs/Expressを使おうとしています。 証明書はインストールされますが、それは信頼されていないため、それらのどれも適切に動作しません。以下は、私が失敗したものを試してみました。

どなたか、こんなことができるワークフローを提供していただけませんか? 証明書のインストールはできるけど クローム(v32)でもIE(v10)でも証明書を信頼させることができないのですが。

EDIT: コメントで、問題は信頼されたcert-rootがないことだと示唆されました。 私はIE経由で証明書をインストールしましたが、まだ信頼されていません。

どうすればいいですか?

上記の回答は部分的なものでした。これを動作させるために多くの時間を費やしたので、正気の沙汰とは思えません。未来の自分へのメモ、ここに必要なものがあります。

Windows10で、Chrome65で作業しています。Firefoxはうまく動作しています。セキュリティ例外としてlocalhostを確認すれば、動作します。Chromeはダメです。

ステップ1. という名前のフォルダをバックエンドに作成します。 security .その中で作業します。

ステップ2. という名前のリクエスト設定ファイルを作成します。 req.cnf を以下の内容で作成しました(クレジットはこちらです。 アンシュル )

req.cnf :

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = Country initials like US, RO, GE
ST = State
L = Location
O = Organization Name
OU = Organizational Unit 
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost

このフィールドの説明は ここで .

ステップ3. ターミナルで security フォルダに移動し、次のコマンドを入力します。

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256

ステップ4. を指定すると security フォルダを作成し、expressアプリで次のように実行します。(credit goes to @Diego Mello)

backend 
 /security
 /server.js

server.js。

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000

app.get('/', (req, res) => {
    res.send("IT'S WORKING!")
})

const httpsOptions = {
    key: fs.readFileSync('./security/cert.key'),
    cert: fs.readFileSync('./security/cert.pem')
}
const server = https.createServer(httpsOptions, app)
    .listen(port, () => {
        console.log('server running at ' + port)
    })

ステップ5. サーバを起動します。 node server.js にアクセスしてください。 https://localhost:3000 .

この時点で、サーバーの設定は完了です。しかし、ブラウザには警告メッセージが表示されるはずです。

自己署名した証明書を、CAに信頼された認証局として、chrome/windows certificates storeに登録する必要があります。 (クロームではウィンドウズにも保存されます。)

ステップ6. chromeのDev Toolsを開き、Securityパネルを開き、View Certificateをクリックする。

ステップ7. 詳細パネルで「ファイルをコピー」をクリックし、「証明書のエクスポートウィザード」が表示されたら、以下のように「次へ」をクリックします。

ステップ8 DERエンコーディングのまま、次へをクリックし、以下を選択します。 Browse を作成し、デスクトップなどアクセスしやすいフォルダに置き、証明書の名前を localhost.cer, then click Save and then Finish. . デスクトップ上に証明書が表示されるはずです。

ステップ9. 開く chrome://settings/ をurlボックスに挿入してください。下の方にある Advanced / Advanced Options を見つけ、スクロールダウンして Manage Certificates .

ステップ10 Trusted Root Certification Authoritiesパネルに移動し、インポートをクリックします。

をインポートします。 localhost.cer 証明書のエクスポートを完了しました。

ステップ11. をクリックして localhost.cer という警告が表示されるまで、デフォルト値のまま「次へ」を何度もクリックします。

ステップ12 すべてを終了し、クロームを再起動します。その後 https://localhost:3000 が表示されるはずです。 <イグ