Leitfaden Entwicklungshandbuch

Verwendung von X509-Zertifikaten in Fibjs

Option 1: Verwenden Sie ein temporäres selbstsigniertes Zertifikat

1 2 3
const CYPT = require('crypto'); const SSLX = require('ssl'); const HTTP = require("http");

1.Erstellen Sie ein Schlüsselobjekt und generieren Sie ein 2048-Bit-RSA-Schlüsselpaar

1 2
let pky = new CYPT.PKey(); pky.genRsaKey(2048);

2.Erstellen Sie ein Zertifikatanforderungsobjekt mit dem öffentlichen Schlüssel in pky oben

1 2 3 4 5 6 7
let xrq = new CYPT.X509Req("CN=localhost,O=fibjs", pky); /** * CN=localhost 是证书的主题名称, 就是证书的使用者(一般是域名 * 可以加一些扩展内容, 比如 O=IBM,OU=IT,...(用逗号分隔)等项 */

3. Stellen Sie das Zertifikat mit dem privaten Schlüssel in pky aus

1 2 3 4 5 6 7 8
let opt = { notBefore: new Date('2019-01-01') // 证书生效时间 ,notAfter: new Date('2029-12-31') // 证书失效时间 }; let crt = xrq.sign("CN=myy.mkx", pky, opt); // CN=myy.mkx 是证书的签发者, 同样可添加扩展 // opt 参数参见 fibjs 文档

4. Starten Sie den https-Dienst mit einem temporären Zertifikat

1 2 3 4
var svr = new HTTP.HttpsServer(crt, pky, 443, (req)=> { req.response.write('<h1>fibjs https server</h1>'); }); svr.start();

5. Der Browser besucht https: // localhost / test, da es sich nicht um ein offizielles Zertifikat handelt, der Browser es nicht erkennt und Sie weiterhin manuell darauf zugreifen müssen. Klicken Sie auf das Zertifikatsymbol in der Adressleiste, um die Zertifikatdetails anzuzeigen.


Option 2: Generieren und verwenden Sie eine selbstsignierte Zertifikatdatei

1. Generieren Sie eine Zertifikat- / private Schlüsseldatei

1 2 3 4 5 6 7 8 9
const fs = require('fs'); //...(同上面方式一的1、2、3步骤, 省略)... let ks = pky.exportPem(); // 导出私钥文本 let cs = crt.dump(true)[0]; // 导出证书文本, 数组(只有一项) fs.writeTextFile('d:/mycert.key', ks); // 保存私钥 fs.writeTextFile('d:/mycert.pem', cs); // 保存证书

2. Verwenden Sie die Zertifikat- / private Schlüsseldatei

1 2 3 4 5 6 7 8 9 10 11 12 13 14
const CYPT = require('crypto'); const SSLX = require('ssl'); const HTTP = require("http"); let pky = new CYPT.PKey(); let crt = new CYPT.X509Cert(); pky.importFile('d:/mycert.key'); // 读取key文件 crt.loadFile('d:/mycert.pem'); // 读取pem文件 var svr = new HTTP.HttpsServer(crt, pky, 443, (req)=> { req.response.write('<h1>fibjs https server</h1>'); }); svr.start();

Option 3: Verwenden Sie ein vorhandenes Zertifikat

Die obige Methode zum Laden von Zertifikatdateien kann auch für formale Zertifikate verwendet werden, z

  • 从阿里云申请的免费证书(下载other格式 Alibaba 从阿里云申请的免费证书(下载other格式 , einschließlich xxx.pem- und xxx.key-Dateien).
  • Zertifikat erhalten durch certbot.

Zertifikate in anderen Formaten müssen möglicherweise konvertiert werden. Weitere Informationen finden Sie in der Dokumentation zu fibjs.