Analyse von https-Anwendungsfällen in Node.js
Dieses Mal werde ich Ihnen eine Analyse der https-Nutzungsfälle in Node.js bringen. Was sind die Vorsichtsmaßnahmen für die Verwendung von https in Node.js? Im Folgenden sind praktische Fälle aufgeführt. Schauen wir uns das einmal an.
ModulÜbersicht
Die Bedeutung dieses Moduls muss grundsätzlich nicht betont werden. Heutzutage, da die Netzwerk-Sicherheitsprobleme immer schwerwiegender werden, ist es für Websites ein unvermeidlicher Trend, HTTPS einzuführen.
In nodejs wird das https-Modul bereitgestellt, um HTTPS-bezogene Funktionen auszuführen. Aus der offiziellen Dokumentation geht hervor, dass es der Verwendung des http-Moduls sehr ähnlich ist.
Dieser Artikel besteht hauptsächlich aus zwei Teilen:
Eine einführende Erklärung des https-Moduls anhand von Beispielen des Clients und Servers.
So greifen Sie auf Websites mit nicht vertrauenswürdigen Sicherheitszertifikaten zu. (Nehmen Sie 12306 als Beispiel)
Aufgrund des begrenzten Platzes kann dieser Artikel nicht zu viel über das HTTPS-Protokoll und verwandte technische Systeme erklären. Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht an Austausch.
Client-Beispiel
Die Verwendung ist dem http-Modul sehr ähnlich, außer dass die angeforderte Adresse das https-Protokoll ist. Der Code lautet wie folgt :
var https = require('https'); https.get('https://www.baidu.com', function(res){ console.log('status code: ' + res.statusCode); console.log('headers: ' + res.headers); res.on('data', function(data){ process.stdout.write(data); }); }).on('error', function(err){ console.error(err); });
Serverbeispiel
Für die Bereitstellung von HTTPS-Diensten nach außen ist ein HTTPS-Zertifikat erforderlich. Wenn Sie bereits über ein HTTPS-Zertifikat verfügen, können Sie den Schritt zur Zertifikatserstellung überspringen. Wenn nicht, können Sie die folgenden Schritte ausführen
, um ein Zertifikat zu erstellen
1. Erstellen Sie ein Verzeichnis zum Speichern des Zertifikats.
mkdir cert cd cert
2. Privaten Schlüssel generieren.
openssl genrsa -out chyingp-key.pem 2048
3. Generieren Sie eine Zertifikatssignierungsanforderung (csr bedeutet Certificate Signing Request).
openssl req -new \ -sha256 -key chyingp-key.key.pem \ -out chyingp-csr.pem \ -subj "/C=CN/ST=Guandong/L=Shenzhen/O=YH Inc/CN=www.chyingp.com"
4. Zertifikat erstellen.
openssl x509 \ -req -in chyingp-csr.pem \ -signkey chyingp-key.pem \ -out chyingp-cert.pem
HTTPS-Server
Der Code lautet wie folgt:
var https = require('https'); var fs = require('fs'); var options = { key: fs.readFileSync('./cert/chyingp-key.pem'), // 私钥 cert: fs.readFileSync('./cert/chyingp-cert.pem') // 证书 }; var server = https.createServer(options, function(req, res){ res.end('这是来自HTTPS服务器的返回'); }); server.listen(3000);
Da ich den Domainnamen www.chyingp.com nicht habe, habe ich Konfigurieren Sie zuerst den lokalen Host
127.0.0.1 www.chyingp.com
Starten Sie den Dienst und besuchen Sie http://www.chyingp.com:3000 im Browser . Beachten Sie, dass der Browser Sie darauf hinweist, dass das Zertifikat unzuverlässig ist. Klicken Sie einfach auf „Vertrauen“ und fahren Sie mit dem Besuch fort.
Fortgeschrittenes Beispiel: Zugriff auf eine Website mit einem nicht vertrauenswürdigen Sicherheitszertifikat
Hier ist unser Favorit 12306 als Beispiel. Wenn wir über den Browser auf die Ticketkaufseite von 12306 https://kyfw.12306.cn/otn/regist/init zugreifen, verhindert Chrome den Zugriff darauf. Dies liegt daran, dass das Zertifikat von 12306 selbst ausgestellt wird und Chrome es nicht bestätigen kann . Seine Sicherheit.
Um mit dieser Situation umzugehen, können die folgenden Methoden angewendet werden:
Besuchen Sie nicht mehr: Sagen Sie Dorfbewohner, die unbedingt Tickets für die Heimreise zum Neujahr ergattern möchten es ist inakzeptabel.
Sicherheitswarnung ignorieren und weiter besuchen: In den meisten Fällen lässt der Browser dies zu, die Sicherheitsabfrage wird jedoch weiterhin angezeigt.
Importieren Sie das CA-Stammzertifikat von 12306: Der Browser gehorcht und geht davon aus, dass der Zugriff sicher ist. (Eigentlich gibt es noch Sicherheitstipps, da der von 12306 verwendete Signaturalgorithmus nicht sicher genug ist)
Beispiel: Auslösen von Sicherheitsbeschränkungen
Ähnlich Das gleiche Problem tritt auch auf, wenn Sie Anfragen über den Knoten-https-Client stellen. Machen wir ein Experiment. Der Code lautet wie folgt:
var https = require('https'); https.get('https://kyfw.12306.cn/otn/regist/init', function(res){ res.on('data', function(data){ process.stdout.write(data); }); }).on('error', function(err){ console.error(err); });
Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Fehlermeldung, was bedeutet, dass das Sicherheitszertifikat unzuverlässig ist und der weitere Zugriff verweigert wird.
{ Fehler: selbstsigniertes Zertifikat in der Zertifikatskette
bei Fehler (nativ)
bei TLSSocket.(_tls_wrap.js:1055:38)
bei emitNone (events.js:86:13)
bei TLSSocket.emit (events.js:185:7)
bei TLSSocket._finishInit (_tls_wrap.js:580:8)
bei TLSWrap.ssl.onhandshakedone (_tls_wrap.js:412:38) Code: 'SELF_SIGNED_CERT_IN_CHAIN' }
ps:个人认为这里的错误提示有点误导人,12306网站的证书并不是自签名的,只是对证书签名的CA是12306自家的,不在可信列表里而已。自签名证书,跟自己CA签名的证书还是不一样的。
类似在浏览器里访问,我们可以采取如下处理:
不建议:忽略安全警告,继续访问;
建议:将12306的CA加入受信列表;
方法1:忽略安全警告,继续访问
非常简单,将 rejectUnauthorized 设置为 false 就行,再次运行代码,就可以愉快的返回页面了。
// 例子:忽略安全警告 var https = require('https'); var fs = require('fs'); var options = { hostname: 'kyfw.12306.cn', path: '/otn/leftTicket/init', rejectUnauthorized: false // 忽略安全警告 }; var req = https.get(options, function(res){ res.pipe(process.stdout); }); req.on('error', function(err){ console.error(err.code); });
方法2:将12306的CA加入受信列表
这里包含3个步骤:
下载 12306 的CA证书
将der格式的CA证书,转成pem格式
修改node https的配置
1、下载 12306 的CA证书
在12306的官网上,提供了CA证书的 下载地址 ,将它保存到本地,命名为 srca.cer。
2、将der格式的CA证书,转成pem格式
https初始化client时,提供了 ca 这个配置项,可以将 12306 的CA证书添加进去。当你访问 12306 的网站时,client就会用ca配置项里的 ca 证书,对当前的证书进行校验,于是就校验通过了。
需要注意的是,ca 配置项只支持 pem 格式,而从12306官网下载的是der格式的。需要转换下格式才能用。关于 pem、der的区别,可参考 这里 。
openssl x509 -in srca.cer -inform der -outform pem -out srca.cer.pem
3、修改node https的配置
修改后的代码如下,现在可以愉快的访问12306了。
// 例子:将12306的CA证书,加入我们的信任列表里 var https = require('https'); var fs = require('fs'); var ca = fs.readFileSync('./srca.cer.pem'); var options = { hostname: 'kyfw.12306.cn', path: '/otn/leftTicket/init', ca: [ ca ] }; var req = https.get(options, function(res){ res.pipe(process.stdout); }); req.on('error', function(err){ console.error(err.code); });
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Das obige ist der detaillierte Inhalt vonAnalyse von https-Anwendungsfällen in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Verwendung: In JavaScript wird die Methode insertBefore() verwendet, um einen neuen Knoten in den DOM-Baum einzufügen. Diese Methode erfordert zwei Parameter: den neuen Knoten, der eingefügt werden soll, und den Referenzknoten (d. h. den Knoten, an dem der neue Knoten eingefügt wird).

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Der https-Workflow umfasst Schritte wie vom Client initiierte Anfrage, Serverantwort, SSL/TLS-Handshake, Datenübertragung und clientseitiges Rendering. Durch diese Schritte kann die Sicherheit und Integrität der Daten während der Übertragung gewährleistet werden.
