Guía de desarrollo de la guía

Uso del certificado X509 en fibjs

Método 1: use un certificado autofirmado temporal

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

1. Cree un objeto clave y genere un par de claves RSA de 2048 bits

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

2. Cree un objeto de solicitud de certificado, utilizando la clave pública en pky arriba

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

3. Firme el certificado y use la clave privada en pky

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. Use un certificado temporal para iniciar el servicio https

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

5. El navegador visita https: // localhost / para probar, porque no es un certificado formal, el navegador no lo reconocerá, debe continuar visitando manualmente, haga clic en el icono del certificado en la barra de direcciones para ver los detalles del certificado.


Método 2: generar y utilizar un archivo de certificado autofirmado

1. Generar certificado / archivo de clave privada

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. Utilice el certificado / archivo de clave privada

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();

Método 3: usar un certificado existente

El método anterior de cargar archivos de certificados también se puede utilizar para certificados formales, como

  • 从阿里云申请的免费证书(下载other格式 Alibaba 从阿里云申请的免费证书(下载other格式 , incluidos dos archivos xxx.pem y xxx.key).
  • Solicite el certificado obtenido a través de certbot.

Es posible que sea necesario convertir los certificados en otros formatos, consulte la documentación de fibjs para obtener más detalles.