私はVagrantボックスで実行しているNodes.jsアプリケーションを継承しました。SSL/TLS接続経由でVagrantのNode.jsアプリケーションにアクセス
私は、 "0.0.0.0"にバインドしているアプリケーションを持っていて、独自のserver.keyとcertsをsecurekeyフォルダに持っています。
var https = require('https');
var fs = require('fs');
var ssl_options = {
key: fs.readFileSync('./securekey/server.key'),
cert: fs.readFileSync('./securekey/server.crt'),
ca: fs.readFileSync('./securekey/ca.crt')
};
https.createServer(ssl_options, app).listen(3001, '0.0.0.0');
私はアプリを実行すると、私は(ベイグラントは私のWindows PC上で実行されている)私のWindows上でそれにアクセスすることができると期待ブラウザURL https://localhost:3001
経由しかし、私は、「安全な接続に失敗しました」を取得Mozillaについて
$ openssl s_client -host 127.0.0.1 -port 3001
CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 316 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1461923745
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
そして
$ curl -v -k 'https://localhost:3001'
* STATE: INIT => CONNECT handle 0x6000574a0; line 1103 (connection #-5000)
* Rebuilt URL to: https://localhost:3001/
* Added connection 0. The cache now contains 1 members
* Trying 127.0.0.1...
* STATE: CONNECT => WAITCONNECT handle 0x6000574a0; line 1156 (connection #0)
* Connected to localhost (127.0.0.1) port 3001 (#0)
* STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x6000574a0; line 1253 (connection #0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* STATE: SENDPROTOCONNECT => PROTOCONNECT handle 0x6000574a0; line 1267 (connection #0)
* Unknown SSL protocol error in connection to localhost:3001
* Curl_done
* Closing connection 0
* The cache now contains 0 members
curl: (35) Unknown SSL protocol error in connection to localhost:3001
をしかしベイグラントVM端子上で実行すると、これらのコマンドは、成功した接続が戻ってきている。
私はCygwinを使用して、Windows PC上でこれを試してみましたよ!
Mozilla Firefoxからアプリにアクセスできるように、WindowsのPC /ブラウザでアプリの証明書を受け入れるにはどうすればよいですか?すでにserver.keyとcertsを持っているので、確かに自分の鍵を生成してアプリを使用する必要はありません。
編集:私は唯一のデフォルトをconfigs..the残りをされているポート転送を持って
Vagrant.configure(2) do |config|
config.vm.box = "centos7"
config.vm.network "forwarded_port", guest: 3000, host: 3000, auto_correct: true
config.vm.network "forwarded_port", guest: 3001, host: 3001, auto_correct: true
end
: はここに私のベイグラントファイルです。
とアプリがベイグラント上で実行されている場合、netstatコマンドは、ポートが接続
$ netstat -an | grep 3001
TCP 0.0.0.0:3001 0.0.0.0:0 LISTENING
のために待機していることを示しており、私は、ブラウザ上でhttps://localhost:3001にアクセスするとき、私はこれを参照してください。
netstat -an | grep 3001
TCP 0.0.0.0:3001 0.0.0.0:0 LISTENING
TCP 127.0.0.1:3001 127.0.0.1:49651 ESTABLISHED
TCP 127.0.0.1:49651 127.0.0.1:3001 ESTABLISHED
はそうしポート接続のようなものですが、VMはデータを返すことができません。
こんにちは、私はバゲージファイルを追加しました。ポート3000と3001の両方を転送しましたが、現在はSSL用に3001しか使用していません。 – evkwan
さて、VMの 'sudo iptables -L'の出力は?また、 'vagrant up'の出力を確認したいかもしれません - ポートにauto_correctがあるので、3001で他の何かが聞こえている場合には別のポートを割り当てるかもしれません(これはそうではありませんが)。 – joelnb
私はテストのためだけにアプリを実行しているので、私は実際にVM上でiptablesを無効にしました。 – evkwan