mirror of
https://github.com/Lissy93/web-check.git
synced 2026-05-13 06:01:02 -04:00
37 lines
1.0 KiB
JavaScript
37 lines
1.0 KiB
JavaScript
import tls from 'tls';
|
|
import middleware from './_common/middleware.js';
|
|
|
|
const sslHandler = async (urlString) => {
|
|
const parsedUrl = new URL(urlString);
|
|
const options = {
|
|
host: parsedUrl.hostname,
|
|
port: parsedUrl.port || 443,
|
|
servername: parsedUrl.hostname,
|
|
rejectUnauthorized: false,
|
|
};
|
|
|
|
return new Promise((resolve, reject) => {
|
|
const socket = tls.connect(options, () => {
|
|
const cert = socket.getPeerCertificate();
|
|
if (!cert || Object.keys(cert).length === 0) {
|
|
reject(new Error('No certificate presented by the server'));
|
|
socket.end();
|
|
return;
|
|
}
|
|
const { raw, issuerCertificate, ...certData } = cert;
|
|
resolve({
|
|
...certData,
|
|
isValid: socket.authorized,
|
|
authError: socket.authorizationError || null,
|
|
});
|
|
socket.end();
|
|
});
|
|
socket.on('error', (e) => {
|
|
reject(new Error(`SSL connection failed: ${e.message}`));
|
|
});
|
|
});
|
|
};
|
|
|
|
export const handler = middleware(sslHandler);
|
|
export default handler;
|