in runtimes/runtimes/util/standalone/certificatesReaders.ts [23:74]
export function readLinuxCertificates(): string[] {
const allFiles = [...UNIX_CERT_FILES]
const certificates: string[] = []
let firstError: Error | undefined
let hasSeenCertificate = false
// Step 1: Collect all certificate files from directories
for (const dir of UNIX_CERT_DIRS) {
try {
const dirFiles = readdirSync(dir).map(file => path.join(dir, file))
allFiles.push(...dirFiles)
} catch (error: any) {
firstError ??= error
}
}
// Step 2: Extract certificates from all collected files
for (const file of allFiles) {
try {
const content = readFileSync(file, 'utf8')
const matches = content.match(PEM_CERT_REGEXP)
// Skip if no certificates found in this file
if (!matches) continue
// Track if we've found any valid certificates
hasSeenCertificate = hasSeenCertificate || matches.length > 0
// Add trimmed certificates to our collection
const validCertificates = matches.map(cert => cert.trim())
certificates.push(...validCertificates)
} catch (error: any) {
firstError ??= error
}
}
// Step 3: Handle errors and return results
if (!hasSeenCertificate && firstError) {
const errorMessage = 'Error when reading Linux certificates'
console.log(errorMessage)
OperationalTelemetryProvider.getTelemetryForScope(TELEMETRY_SCOPES.RUNTIMES).emitEvent({
errorOrigin: 'caughtError',
errorName: firstError?.name ?? 'unknown',
errorType: 'linuxCertificateReader',
errorMessage: errorMessage,
})
console.error(firstError)
return []
}
return certificates
}