Использование сертификата X509 в fibjs
Метод 1. Используйте временный самозаверяющий сертификат
1
2
3const CYPT = require('crypto');
const SSLX = require('ssl');
const HTTP = require("http");
1. Создайте ключевой объект и сгенерируйте 2048-битную пару ключей RSA.
1
2let pky = new CYPT.PKey();
pky.genRsaKey(2048);
2. Создайте объект запроса сертификата, используя открытый ключ в pky выше.
1
2
3
4
5
6
7let xrq = new CYPT.X509Req("CN=localhost,O=fibjs", pky);
/**
* CN=localhost 是证书的主题名称, 就是证书的使用者(一般是域名
* 可以加一些扩展内容, 比如 O=IBM,OU=IT,...(用逗号分隔)等项
*/
3. Для выдачи сертификата используйте закрытый ключ в pky
1
2
3
4
5
6
7
8let 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
4var svr = new HTTP.HttpsServer(crt, pky, 443, (req)=> {
req.response.write('<h1>fibjs https server</h1>');
});
svr.start();
5. В браузере перейдите по адресу https: // localhost / test, поскольку это не официальный сертификат, браузер не распознает его, вам необходимо продолжить доступ вручную, щелкните значок сертификата в адресной строке, чтобы просмотреть подробную информацию о сертификат.
Метод 2: создание и использование файла самозаверяющего сертификата
1. Создайте файл сертификата / закрытого ключа.
1
2
3
4
5
6
7
8
9const 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
14const 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: использовать существующий сертификат
Вышеупомянутый метод загрузки файлов сертификатов также может использоваться для официальных сертификатов, таких как
- Бесплатный сертификат запрошен у Alibaba Cloud (загрузите другой формат, включая два файла xxx.pem и xxx.key).
- Сертификат получен через приложение certbot.
Возможно, потребуется преобразовать сертификаты в других форматах, подробности см. В документации по fibjs.