世の中にはたくさんのトピックや記事があることは知っていますが、私はこの件について本当に苦労しています。
-k
TLS で実行されている NodeJS インスタンスがあります。cURL を使用してそれに接続するには別のサーバーが必要です。残念ながら、使用している cURL のバージョンの制限により、これを行うことができません。
したがって、接続時に証明書の警告が表示されないようにする必要があります。
私の考えは次のとおりです。
1. to generate a cert
2. generate a certificate signing request
3. acquire the CA
4. sign the certificate with the CA
5. Configure NodeJS to send the CA, Cert, and Key during handshakes
6. Have the requesting server do a cURL command, specifying the certificate in the command.
これは意味をなしていますか、それとも逆ですか? 各部分を区別するのに非常に苦労しています。
ありがとう、
編集
回答を見ると、どうやら私は何をしているのか全く分かっていないようです。CA、公開鍵、秘密鍵のコピーを入手できれば、どうすればよいのでしょうか。詳しく教えてください。
答え1
残念ながら、使用している cURL のバージョンの制限により、-k を実行できません。
これは最初から間違ったアプローチです。-k
サーバー証明書の検証が無効になり、中間者攻撃が容易になります。つまり、https が防止しようとしているものを許可してしまうのです。
- NodeJSを設定するハンドシェイク中にCA、証明書、キーを送信する
- リクエストサーバーにcURLコマンドを実行させ、コマンドで証明書を指定する。
ここで何を達成しようとしているのかよくわかりませんが、私が正しく理解しているなら、サーバー側で証明書を生成し、この証明書をクライアントに送信して、将来この証明書と照合できるようにしたいということですね。
このアプローチの問題は、新しく作成された証明書をサーバーからクライアントに送信する際に保護する必要があることです。そうしないと、中間者が証明書を攻撃者が作成した証明書と交換し、検出されない中間者攻撃を継続する可能性があります。
残念ながら、あなたの質問は未知の問題を解決しようとする試みについて述べています(XY問題)。SSL を実行する一般的な方法は、クライアントが既に信頼している証明機関 (CA) と、この CA が発行した証明書を使用することです。ほとんどの場合、Let's Encrypt などのパブリック CA がこれに使用されます。これらの CA は既にクライアント (OS またはブラウザーに付属) によって信頼されているためです。質問には、この確立された方法を使用できず、代わりに独自のソリューションを考案する必要がある理由の説明がありません。