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, usando 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. Para emitir un certificado, 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. Inicie el servicio https con un certificado temporal.

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 accede a https: // localhost / test, ya que no es un certificado oficial, el navegador no lo reconocerá, debe continuar accediendo manualmente, haga clic en el icono del certificado en la barra de direcciones para ver la información detallada del certificado.


Método 2: generar y usar 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 archivo de certificado / 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 oficiales, como

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

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