const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');

// 创建证书目录
const certsDir = path.join(__dirname, 'certs');
if (!fs.existsSync(certsDir)) {
    fs.mkdirSync(certsDir);
}

console.log('正在生成SSL证书...');

try {
    // 生成私钥
    execSync(`openssl genrsa -out ${certsDir}/private-key.pem 2048`, { stdio: 'inherit' });
    
    // 生成证书签名请求
    execSync(`openssl req -new -key ${certsDir}/private-key.pem -out ${certsDir}/csr.pem -subj "/C=CN/ST=Beijing/L=Beijing/O=Test/OU=Test/CN=localhost"`, { stdio: 'inherit' });
    
    // 生成自签名证书
    execSync(`openssl x509 -req -in ${certsDir}/csr.pem -signkey ${certsDir}/private-key.pem -out ${certsDir}/certificate.pem -days 365`, { stdio: 'inherit' });
    
    // 清理临时文件
    fs.unlinkSync(path.join(certsDir, 'csr.pem'));
    
    console.log('SSL证书生成成功！');
    console.log('证书文件位置：');
    console.log(`- 私钥: ${certsDir}/private-key.pem`);
    console.log(`- 证书: ${certsDir}/certificate.pem`);
} catch (error) {
    console.error('生成证书时出错:', error.message);
    console.log('请确保已安装OpenSSL');
} 