33 lines
1.0 KiB
JavaScript
33 lines
1.0 KiB
JavaScript
const { execSync } = require('child_process');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const certDir = path.join(__dirname, '..', 'certificates');
|
|
|
|
// 创建证书目录
|
|
if (!fs.existsSync(certDir)) {
|
|
fs.mkdirSync(certDir);
|
|
}
|
|
|
|
console.log('生成本地 HTTPS 证书...');
|
|
|
|
try {
|
|
// 生成私钥
|
|
execSync(`openssl genrsa -out ${certDir}/localhost-key.pem 2048`);
|
|
|
|
// 生成证书请求
|
|
execSync(`openssl req -new -key ${certDir}/localhost-key.pem -out ${certDir}/localhost.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=Dev/CN=localhost"`);
|
|
|
|
// 生成自签名证书
|
|
execSync(`openssl x509 -req -in ${certDir}/localhost.csr -signkey ${certDir}/localhost-key.pem -out ${certDir}/localhost.pem -days 365`);
|
|
|
|
console.log('证书生成成功!');
|
|
console.log(`证书位置: ${certDir}/localhost.pem`);
|
|
console.log(`私钥位置: ${certDir}/localhost-key.pem`);
|
|
|
|
// 清理 CSR 文件
|
|
fs.unlinkSync(`${certDir}/localhost.csr`);
|
|
} catch (error) {
|
|
console.error('生成证书失败:', error.message);
|
|
process.exit(1);
|
|
} |