Руководство по разработке руководства

Использование сертификата X509 в fibjs

Способ 1: использовать временный самоподписанный сертификат

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

1. Создайте ключевой объект и сгенерируйте 2048-битную пару ключей RSA

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

2. Создайте объект запроса сертификата, используя открытый ключ в pky выше

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

3. Подпишите сертификат и используйте закрытый ключ в 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. Используйте временный сертификат для запуска службы 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. Браузер посещает https: // localhost / для тестирования, поскольку он не является официальным сертификатом, браузер не распознает его, вам необходимо продолжить посещение вручную, щелкните значок сертификата в адресной строке, чтобы просмотреть сведения о сертификате.


Способ 2: создать и использовать самозаверяющий файл сертификата

1. Создайте файл сертификата / личного ключа

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. Используйте файл сертификата / секретного ключа

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

Способ 3: использовать существующий сертификат

Вышеуказанный метод загрузки файлов сертификатов также можно использовать для формальных сертификатов, таких как

  • 从阿里云申请的免费证书(下载other格式 Alibaba 从阿里云申请的免费证书(下载other格式 , включая два файла xxx.pem и xxx.key).
  • Подать заявку на сертификат, полученный через certbot.

Сертификаты в других форматах, возможно, должны быть преобразованы, пожалуйста, обратитесь к документации fibjs для деталей.