new ssl
This commit is contained in:
@@ -7,12 +7,28 @@ const forge = require('node-forge');
|
||||
const workspaceRoot = __dirname;
|
||||
const httpsDir = path.join(workspaceRoot, '..', 'includes', 'ServiceDeps', 'https');
|
||||
const msnDir = path.join(workspaceRoot, '..', 'includes', 'ServiceDeps', 'msntv2');
|
||||
const domainsFile = path.join(msnDir, 'msn_domains.txt');
|
||||
|
||||
const defaultCaCertPath = path.join(msnDir, 'msntv2.crt');
|
||||
const defaultCaKeyPath = path.join(msnDir, 'msntv2.key');
|
||||
const defaultOutCertPath = path.join(msnDir, 'msn_domains.crt');
|
||||
const defaultOutKeyPath = path.join(msnDir, 'msn_domains.key');
|
||||
const domains = [
|
||||
"headwaiter.trusted.msntv.msn.com",
|
||||
"*.trusted.msntv.msn.com",
|
||||
"msntv.msn.com",
|
||||
"mail.services.live.com",
|
||||
"login.live.com",
|
||||
"poptimize.msn.com",
|
||||
"favorites.msn.com",
|
||||
"messenger.msn.com",
|
||||
"livefilestore.com",
|
||||
"users.storage.live.com",
|
||||
"g.msn.com",
|
||||
"msnialogin.passport.com",
|
||||
"minisrv.local",
|
||||
"*.minisrv.local"
|
||||
]
|
||||
|
||||
const defaultCaCertPath = path.join(msnDir, 'emac.crt');
|
||||
const defaultCaKeyPath = path.join(msnDir, 'emac.key');
|
||||
const defaultOutCertPath = path.join(msnDir, 'minisrv.crt');
|
||||
const defaultOutKeyPath = path.join(msnDir, 'minisrv.key');
|
||||
|
||||
function parseArgs(argv) {
|
||||
const out = {};
|
||||
@@ -31,42 +47,6 @@ function parseArgs(argv) {
|
||||
return out;
|
||||
}
|
||||
|
||||
function extractDomainsFromRedirectMap(text) {
|
||||
const found = [];
|
||||
const seen = new Set();
|
||||
const re = /"([A-Za-z0-9.-]+\.)"\s*:\s*self\.redirect_ip/g;
|
||||
let match;
|
||||
while ((match = re.exec(text))) {
|
||||
const clean = match[1].replace(/\.$/, '').toLowerCase();
|
||||
if (!seen.has(clean)) {
|
||||
seen.add(clean);
|
||||
found.push(clean);
|
||||
}
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
function loadDomains(args) {
|
||||
if (args['from-map-file']) {
|
||||
const mapText = fs.readFileSync(path.resolve(workspaceRoot, args['from-map-file']), 'utf8');
|
||||
const domains = extractDomainsFromRedirectMap(mapText);
|
||||
if (!domains.length) {
|
||||
throw new Error('No domains were extracted from --from-map-file.');
|
||||
}
|
||||
return domains;
|
||||
}
|
||||
|
||||
if (!fs.existsSync(domainsFile)) {
|
||||
throw new Error('Domain file not found: ' + domainsFile);
|
||||
}
|
||||
|
||||
const domains = fs.readFileSync(domainsFile, 'utf8')
|
||||
.split(/\r?\n/)
|
||||
.map((s) => s.trim().toLowerCase())
|
||||
.filter((s) => s && !s.startsWith('#'));
|
||||
|
||||
return Array.from(new Set(domains));
|
||||
}
|
||||
|
||||
function loadPemOrThrow(filePath, label) {
|
||||
if (!fs.existsSync(filePath)) {
|
||||
@@ -99,9 +79,8 @@ function generateCert({ domains, caCertPem, caKeyPem, outCertPath, outKeyPath, y
|
||||
cert.publicKey = keys.publicKey;
|
||||
cert.serialNumber = forge.util.bytesToHex(forge.random.getBytesSync(16));
|
||||
|
||||
const now = new Date();
|
||||
cert.validity.notBefore = new Date(now.getTime() - 24 * 60 * 60 * 1000);
|
||||
cert.validity.notAfter = new Date(now.getTime() + years * 365 * 24 * 60 * 60 * 1000);
|
||||
cert.validity.notBefore = new Date('2000-01-01T12:00:00Z');
|
||||
cert.validity.notAfter = new Date('2099-12-31T23:59:59Z');
|
||||
|
||||
const cn = domains[0] || 'headwaiter.trusted.msntv.msn.com';
|
||||
cert.setSubject([
|
||||
@@ -141,7 +120,6 @@ function main() {
|
||||
const years = Number(args.years || 15);
|
||||
const sig = String(args.sig || 'sha1');
|
||||
|
||||
const domains = loadDomains(args);
|
||||
const caCertPem = loadPemOrThrow(caCertPath, 'CA cert');
|
||||
const caKeyPem = loadPemOrThrow(caKeyPath, 'CA key');
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIErzCCA5egAwIBAgIQ/K/Ib/7QA0rO4hjgM53sGDANBgkqhkiG9w0BAQUFADB0
|
||||
MRkwFwYDVQQDDBBtaW5pc3J2IHNlcnZpY2VzMREwDwYDVQQIDAhOZXcgWW9yazEL
|
||||
MAkGA1UEBhMCVVMxHjAcBgkqhkiG9w0BCQEWD3plZmllQHplZmllLm5ldDEXMBUG
|
||||
A1UECgwOWmVmaWUgTmV0d29ya3MwIBcNMDAwMTAxMTIwMDAwWhgPMjA5OTEyMzEy
|
||||
MzU5NTlaMFExKTAnBgNVBAMTIGhlYWR3YWl0ZXIudHJ1c3RlZC5tc250di5tc24u
|
||||
Y29tMRcwFQYDVQQKEw5aZWZpZSBOZXR3b3JrczELMAkGA1UEBhMCVVMwggEiMA0G
|
||||
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDhh5bdTvB2q03vo/hwikBsfRt3p5Sg
|
||||
Y7N6+e+UfUK8LxZRLwLwk3TIS7LcU+RE6d8UHO8A68joX61kYggtMAGEvYC2JWGC
|
||||
XiUb37CZBJrIMTqU+tFn2zTyCvpNBU7Pv6t/PAKPc0XztrQEZ7RmqywDMbWu2B1M
|
||||
86eil0HN4n4fGMYkVmVjkHJJYNChck+edkL4rDkKnbg4Ar37lYYHofrQDWTAW9eD
|
||||
QSxXBPQbbqDIDHMdXwHnfCbJZIkgQ7ClK78PN6s9DRgagvnXI8vclyW38YQ/cqlk
|
||||
DNkGDGcfAOg9BGtwTAUd7Bu/pAjrAR/WRY5jdv3++4/taibz5hKildA7AgMBAAGj
|
||||
ggFcMIIBWDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDATBgNVHSUEDDAKBggrBgEF
|
||||
BQcDATCCAScGA1UdEQSCAR4wggEagiBoZWFkd2FpdGVyLnRydXN0ZWQubXNudHYu
|
||||
bXNuLmNvbYIXKi50cnVzdGVkLm1zbnR2Lm1zbi5jb22CDW1zbnR2Lm1zbi5jb22C
|
||||
Fm1haWwuc2VydmljZXMubGl2ZS5jb22CDmxvZ2luLmxpdmUuY29tghFwb3B0aW1p
|
||||
emUubXNuLmNvbYIRZmF2b3JpdGVzLm1zbi5jb22CEW1lc3Nlbmdlci5tc24uY29t
|
||||
ghFsaXZlZmlsZXN0b3JlLmNvbYIWdXNlcnMuc3RvcmFnZS5saXZlLmNvbYIJZy5t
|
||||
c24uY29tghdtc25pYWxvZ2luLnBhc3Nwb3J0LmNvbYINbWluaXNydi5sb2NhbIIP
|
||||
Ki5taW5pc3J2LmxvY2FsMA0GCSqGSIb3DQEBBQUAA4IBAQBRY2KlKxhVUCv0h86q
|
||||
J66TAJocqyPEwnnvuEAxM209DhO84GR4+D9r+/U3aV18MN0tUEFOy/qx918zpwgC
|
||||
kNghNmtydvW9phMFB//tX56c8UUT0rYESylKCdYDraCh9G3avI8A5hgJQCgfeUGA
|
||||
l0XJvc/yA3piNAPohLB1zyOBlIONLWJxI4kyKjhOM2mkIkJWmLKXOHGPnnqCUAx+
|
||||
+NzEZiJst22sngmHikN53zKyUfp2DO9CUY7hbjctAKo0GUC/Q0yQmL95idqnw56j
|
||||
Gv1deZcTth/1qUqcZRbQDT+546d87rDJLcQDXs/Q34IcmZa0v7jsIL5hJP+/PtOs
|
||||
fpyG
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEA4YeW3U7wdqtN76P4cIpAbH0bd6eUoGOzevnvlH1CvC8WUS8C
|
||||
8JN0yEuy3FPkROnfFBzvAOvI6F+tZGIILTABhL2AtiVhgl4lG9+wmQSayDE6lPrR
|
||||
Z9s08gr6TQVOz7+rfzwCj3NF87a0BGe0ZqssAzG1rtgdTPOnopdBzeJ+HxjGJFZl
|
||||
Y5BySWDQoXJPnnZC+Kw5Cp24OAK9+5WGB6H60A1kwFvXg0EsVwT0G26gyAxzHV8B
|
||||
53wmyWSJIEOwpSu/DzerPQ0YGoL51yPL3Jclt/GEP3KpZAzZBgxnHwDoPQRrcEwF
|
||||
Hewbv6QI6wEf1kWOY3b9/vuP7Wom8+YSopXQOwIDAQABAoIBAGQK4Q3f2ARUHhjZ
|
||||
HDpT4ZsebiJIaMIzJ+k72J5+aC2RF63AlGXCi3HUPo3E+wPk2KuT4COA9Fi8JG7c
|
||||
m7Lr0iifZWqnL1eEyqJQOobOR5jZWZq/nkebMiPSYdDrs1ettvYUWTBoGpYvLDCu
|
||||
DhTjBn2OPgFG5cx+YxTZUvvw5jCFV7u7CDzC3dD/KvPuGdQPOjBnFM9p9NL7AfRw
|
||||
qOF4lw5M8ZT9caDuM/J77MuPXLVh5p6LlV9auVeo3s03E7BOw6Iutje0ZcBqKkjr
|
||||
lDV1QPkXCbbywW1YQDVv1kv9KgAEG1ftbGzq1REEX8SxNWDSzHl1Q04erqsJAI2y
|
||||
eO4RRVUCgYEA/8vgxZAF38605YPcddSzYzQLLABbQJP+1LFXM8fjpI7I5kb34QNN
|
||||
YY6tjhuha9fyOdFTZb3Qj5bA661Hh26BCwA9mc/X/49SJqzriQiZt9ZXVJ3ri8Xv
|
||||
N6N87ELr0uneVeP2zzjJS3E9G2fGqb2ZnRV3sdKpW2m+BNgOEmSdFrUCgYEA4bWL
|
||||
RhrnN9ZNHWRQTLZSX1ixb9HtFV9AbiPrVPbmzLiqmoV/kppIinr94T3ymlygBTBS
|
||||
mowlQViQbEfivmG12QNIs3W3nxBc2jw7vz3XYA/TANdQeNCW5mmgdKGN8IukVLHe
|
||||
tO4Vu5L7lOck+W+LYVgOTgp/c5tFSMPKB4COMS8CgYBbtfRDwQxqHsl61JkRYg5j
|
||||
DgDHaOVOtQETrvWN6ifzEwJylZVABpgS1z3gioWIjecZ1bQp8TE6mhlXJkxUAUmg
|
||||
8Rgk8oEF7pPMrAjSm9PJNr8e5nPSLEhFUYdzidbVSuZdMxuFVl3Nf68iCUYQC5ts
|
||||
14qPpfD0hmgLgo8hBxPPVQKBgEfy0gmv68K92mkjIAHEIK/qGu21MmkcqvIxGwRD
|
||||
jED4INIO+iKmcbdLC4DweVRBcHUW+U3wnLOe4rLRm3LqvMgHpvYl8TmQQrkCeF02
|
||||
/l/Ny4o6GJnajC+4vgBPu2pRaTniVUbBmkXnzbCimgO1Te3i3vR7njMg7M4MM2t+
|
||||
zFTbAoGBAKh9KJs6t6K6bK4I7L7zmRME4L7TCvzXfnqTJHYjXUIuAPDqTaNZAgCd
|
||||
pV45DfUWIIAis/RswLuR3yT6aH3Wpxx7fTW/DTInvBKfU7Kw2Oyko1jWboS/2E3D
|
||||
0HWVZzdbU4Hj48XGeldjgPV0D1/vr1JRTYJGXtjcNDkRMk3U3xrT
|
||||
-----END RSA PRIVATE KEY-----
|
||||
Reference in New Issue
Block a user