Also habe ich eine Nodes.js-App geerbt, die ich auf einer Vagrant-Box ausgeführt habe.Zugriff auf die Node.js-App auf Vagrant über die SSL/TLS-Verbindung
Ich habe die App Bindung an "0.0.0.0", und es hat eine eigene server.key und Zertifikate im Ordner 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');
Wenn ich die app laufen, ich voraussichtlich in der Lage sein, darauf zuzugreifen auf meinem Windows über die URL-Browser (Vagrant ist auf meinem Windows-PC läuft) https://localhost:3001
Aber ich „Sichere Verbindung fehlgeschlagen“ erhalten auf 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)
---
Und
$ 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
Aber diese Befehle sind wieder erfolgreiche Verbindungen, wenn sie auf dem Vagabunden vm Terminal laufen:
ich dies auf Windows-PC mit Cygwin haben versucht!
Was muss ich tun, damit mein Windows PC/Browser die Zertifikate der App akzeptiert, damit ich über Mozilla Firefox auf die App zugreifen kann? Da es bereits server.key und certs hat, muss ich sicherlich nicht wieder eigene Schlüssel generieren, damit die App sie verwenden kann.
EDIT: Hier ist meine Vagrant-Datei:
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
Ich habe nur den Port bekam configs..the Rest Spedition Standard sind.
Und wenn die App auf Vagrant ausgeführt wird, zeigt netstat, dass der Anschluss für die Verbindung hört
$ netstat -an | grep 3001
TCP 0.0.0.0:3001 0.0.0.0:0 LISTENING
Und wenn ich https://localhost:3001 Zugriff auf den Browser, ich sehe dies:
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
Scheint Wie die Port-Verbindungen sind in Ordnung, aber vm ist nicht in der Lage, Daten zurückzugeben.
Hallo, ich habe meine Vagrant-Datei hinzugefügt. Ich habe Port 3000 und 3001 weitergeleitet, aber momentan nur 3001 für SSL. – evkwan
Okay, was ist die Ausgabe von 'sudo iptables -L in der VM? Und vielleicht möchten Sie auch die Ausgabe von 'vagrant up' überprüfen - da Sie auto_correct auf den Ports haben, kann es einen anderen Port zuweisen, wenn etwas anderes auf 3001 hört (obwohl dies weniger wahrscheinlich ist). – joelnb
Da ich die App nur für den Test ausgeführt habe, habe ich iptables auf der VM deaktiviert. – evkwan