ローカルホストで使用する自己署名証明書を作成するためのさまざまな手順に従おうとしています。手順のほとんどは IIS 用のようですが、Nodejs/Express を使用しようとしています。証明書はインストールされますが、信頼されていないため、どれも正常に機能しません。私が試して失敗したものは次のとおりです。
- ローカルホスト用の自己署名証明書を作成するにはどうすればよいですか?
- https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-nginx-for-ubuntu-12-04/
- http://blogs.developerforce.com/developer-relations/2011/05/generating-valid-self-signed-certificates.html
- http://www.robbagby.com/iis/self-signed-certificates-on-iis-7-the-easy-way-and-the-most-effective-way/
これを実行できるワークフローを提供してくれる人はいますか?証明書をインストールできますが、Chrome (v32) でも IE (v10) でも証明書を信頼できません。
編集: コメントで、問題は信頼された証明書ルートがないことであると示唆されました。IE 経由で証明書をインストールしましたが、まだ信頼されていません。
ベストアンサー1
上記の回答は部分的なものでした。これを機能させるのに非常に長い時間を費やしました。これは異常です。将来の自分へのメモとして、必要なことは次のとおりです。
私は Windows 10 で Chrome 65 を使用しています。Firefox は正常に動作しています。セキュリティ例外として localhost を確認するだけで動作します。Chrome では動作しません。
ステップ1。バックエンドに というフォルダを作成しますsecurity
。その中で作業します。
ステップ2。次の内容を含む名前のリクエスト設定ファイルを作成しますreq.cnf
(出典:アンシュル)
要求.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。ターミナルでセキュリティ フォルダーに移動し、次のコマンドを入力します。
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
ステップ4。次に、フォルダーの外でsecurity
、Express アプリで次のようにします: (クレジットは @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 証明書ストアに登録する必要があります。(Chrome はこれを Windows にも保存します)
ステップ6。Chrome で開発ツールを開き、セキュリティ パネルに移動して、証明書の表示をクリックします。
ステップ7。詳細パネルに移動し、「ファイルのコピー」をクリックし、証明書のエクスポート ウィザードが表示されたら、以下のように「次へ」をクリックします。
ステップ8。DER エンコーディングのままにして、次へをクリックし、 を選択してBrowse
、デスクトップなどのアクセスしやすいフォルダーに配置し、証明書に という名前を付けますlocalhost.cer, then click Save and then Finish.
。デスクトップで証明書を確認できるはずです。
ステップ9。chrome://settings/
URL ボックスに入力して開きます。下にある をクリックしAdvanced / Advanced Options
、下にスクロールして を見つけますManage Certificates
。
ステップ10。「信頼されたルート証明機関」パネルに移動し、「インポート」をクリックします。
localhost.cer
手順 8 でエクスポートが完了した証明書をインポートします。
ステップ11。[参照] をクリックし、 を見つけてlocalhost.cer
、デフォルト値のままにして、[次へ] を何度かクリックします。この警告が表示されるまで、[はい] をクリックします。
ステップ12。すべてを閉じて、Chrome を再起動します。次に、https://localhost:3000
次のように表示されます。