El archivo cer que estoy leyendo desde una entrada de archivo, puedo usar fileReader para obtener el contenido. Esperaba que el archivo tuviera comentarios de inicio y fin, pero no es así.
¿Cómo puedo convertir el cer a pem en el navegador, sin cargar el archivo a un servidor?
Lo que realmente quiero es algo como
openssl x509 -in cert.cer -out cert.pempero en el navegador
También probé algunos paquetes x509 de npm, como...
import * as x509 from '@peculiar/x509'; ... const uploadCsr = async (fileArr: File[]): Promise<void> => { const file = fileArr[0]; const reader = new FileReader(); reader.onload = (e: any): void => { const cert = new x509.X509Certificate(e.target.result); console.log('cert', cert); }; reader.readAsBinaryString(file); };pero el error que me sale es
TypeError: Unsupported format of 'raw' argument. Must be one of DER, PEM, HEX, Base64, or Base4UrlTuve que usar readAsArrayBuffer con @peculiar/x509 y .toString('pem');
import * as x509 from '@peculiar/x509'; ... const checkCsr = async (fileArr: File[]): Promise<void> => { setServerError(''); const file = fileArr[0]; const reader = new FileReader(); reader.onload = async (e: any): Promise<void> => { const cert = new x509.X509Certificate(e.target.result); const expires = Date.parse(`${cert.notAfter}`) / 1000; const now = Math.floor(Date.now() / 1000); if (now > expires) setServerError('Certificate has expired'); const issuerArr = cert.issuer.split('='); if (!issuerArr[3].includes('Apple Inc')) setServerError('Certificate not issued by Apple Inc'); const pem = cert.toString('pem'); if (!serverError) setCertificatePem(pem); }; reader.readAsArrayBuffer(file); };