12

を使用して server.key および server.csr ファイルを作成しましたopenssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr。証明書ファイルを提供するstartssl.comでSSL証明書を作成しました。次に、node.js アプリケーションでキー ファイルと証明書ファイルを読み取ります。

var app = module.exports = express.createServer({
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.cert')
});

しかし、アプリケーションから空の応答、「データを受信しませんでした」というメッセージが返されました。何が原因でしょうか? 私はSSLとそのすべての仕組みに非常に慣れていないため、これに関するヘルプは非常に高く評価されています.

詳細情報: VPS サーバー (運用サーバー) で key ファイルと csr ファイルの 2 つのファイルを生成しましたが、現在、それらをローカルホストで動作させようとしています (まず、コードを運用環境にコミットする前に; git commit を行う前に動作することをテストします)。したがって、ローカルホスト (開発環境) が VPS サーバー (本番環境) とは異なるドメインにあることが原因である可能性があります。これは事実でしょうか?もしそうなら、ローカルホストと本番環境が同じ証明書を使用する場所にするにはどうすればよいですか?

または、開発環境用に別の証明書を作成することをお勧めしますか? 私が見ている唯一の問題は、ローカルで行われているため、開発環境用のドメインがないことです。簡単にするために、同じ証明書を使用したいと思います(それが壊れたロックアイコンまたはローカルホスト上の何かを意味する場合でも)。

4

2 に答える 2

38

これは古い質問であることは知っていますが、今日同じことに遭遇しました。Express (ERR_EMPTY_RESPONSE) から同じ結果が返されます。

修正?テスト ブラウザでは、 ではhttpsなくを必ず指定してください (例: )。httphttps://localhost:8443

以前にミドルウェアを使用してすべての http 要求を https に転送していた場合、この問題はこれまで見たことがないでしょう。また、ブラウザーが証明書について不平を言うことを期待しますが、とにかく続行します (クロムでは、これには数回のクリックが必要です)。

于 2016-04-25T23:06:23.907 に答える
3

を使用してアプリケーションに接続することで、エラーのトラブルシューティングを行うことができますcurl --insecure --verbose。通常、複数のホストで SSL 証明書を使用しないでください。ローカルでテストするために自己署名したものを作成し、運用環境で startssl を使用できます。ただし、いずれにせよ、証明書の CN は、サイトへの接続に使用されるホスト名と一致する必要があり、迷惑なブラウザの警告を回避できます。いつでもマシンのドメイン名を作成しsam.localて /etc/hosts ファイルに入れ、それを自己署名証明書とブラウザのアドレスバーで使用できます。

于 2012-11-10T01:19:01.577 に答える