Files
certd/packages/ui/certd-server/src/modules/auto/https/server.ts
2024-10-26 17:14:55 +08:00

50 lines
1.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import https from 'node:https';
import fs from 'fs';
import { Application } from '@midwayjs/koa';
import { createSelfCertificate } from './self-certificate.js';
import { logger } from '@certd/pipeline';
export type HttpsServerOptions = {
enabled: boolean;
app?: Application;
port: number;
key: string;
cert: string;
};
export async function startHttpsServer(opts: HttpsServerOptions) {
logger.info('=========================================');
if (!opts.key || !opts.cert) {
logger.error('证书路径未配置无法启动https服务请先配置koa.https.key和koa.https.cert');
return;
}
if (!fs.existsSync(opts.key) || !fs.existsSync(opts.cert)) {
logger.info('证书文件不存在,将生成自签名证书');
createSelfCertificate({
crtPath: opts.cert,
keyPath: opts.key,
});
}
logger.info('准备启动https服务');
const httpServer = https.createServer(
{
cert: fs.readFileSync(opts.cert),
key: fs.readFileSync(opts.key),
},
opts.app.callback()
);
const hostname = '0.0.0.0';
// A function that runs in the context of the http server
// and reports what type of server listens on which port
function listeningReporter() {
// `this` refers to the http server here
logger.info(`Https server is listening on https://${hostname}:${opts.port}`);
}
try {
httpServer.listen(opts.port, hostname, listeningReporter);
} catch (e) {
logger.error('启动https服务失败', e);
}
}