tutorial principiantes para node libro español ejemplos desde comandos cero node.js ssl https request certificate

node.js - principiantes - node js tutorial pdf



¿Cómo uso el módulo de solicitud node.js para realizar una llamada SSL con mi propio certificado? (5)

Estoy usando node.js y este módulo de solicitud para hacer llamadas HTTP a otro servidor.

https://github.com/mikeal/request

Funciona muy bien Ahora necesito modificar este código para realizar las llamadas a través de SSL, utilizando el certificado SSL de mi empresa. En los documentos del módulo de solicitud, dice esto sobre la opción strictSSL:

"strictSSL: se establece en verdadero para requerir que los certificados SSL sean válidos. Nota: para usar su propia autoridad de certificación, debe especificar un agente que se haya creado con esa ca como opción".

Esto suena como lo que necesito hacer, pero no entiendo esta frase: "especifique un agente que se creó con esa ca como una opción".

1) ¿Qué quieren decir con "un agente"? 2) ¿Cómo "especifico un agente" 3) ¿Cómo creo el agente "con esa ca como una opción"?

Un ejemplo de código sería increíble, pero cualquier pista sería útil. Gracias.


  1. "un agente" significa una instancia de http.Agent del módulo http estándar del nodo
  2. Los documentos indican que esta instancia de agente se pasaría a request en la opción de pool , creo, aunque no lo he hecho yo mismo y los documentos son realmente escasos en los detalles aquí. Basado en el código, creo que es posible que solo necesite options.ca
  3. La solicitud parece ser compatible directamente con options.ca y la usa aquí en getAgent

Entonces, mi conjetura es que tal vez simplemente pase options.ca como una cadena que es la clave pública de la autoridad de certificación de su compañía y vea si la solicitud hace lo correcto desde allí.


Esto explica en gran medida la respuesta de Peter Lyons , proporcionando un ejemplo.

Supongo que está solicitando un dominio que se ejecuta a través de HTTPS con un certificado firmado por su propia autoridad de certificación (ca).

Al usar la https://github.com/mikeal/request , al igual que lo hace, no es necesario que usted mismo agentOptions instancia del agente, simplemente puede proporcionar algunas agentOptions de agentOptions a la solicitud que está realizando. Lo siguiente es un ejemplo:

request({ method: "POST", uri: "https://localhost/entries", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name: "someEntry" }), agentOptions: { ca: fs.readFileSync("certs/ca.cert.pem") } }, function(error, httpResponse, body) { //handle response });

Lo importante aquí son las agentOptions , que proporciona el certificado de una ca. Todos los dominios que usan certificados firmados por la ca ahora son aceptados. Imagina que un CA CA1 ha firmado tres dominios, D1 , D2 , D3 . La configuración de ca en CA1 da como resultado permitir solicitudes a todos los dominios D1 , D2 , D3 (pero no D4 firmado por un ca diferente).

El punto es: "certs/ca.cert.pem" debe ser el certificado de la autoridad de certificación de firma.



tal vez no entiendo bien el problema, pero según mi experiencia, no necesita hacer nada especial si lo require(''https'') , la llamada se apaga automáticamente a través de SSL.

Acabo de probar esto con mi Google API api call y, de hecho, si require(''http'') Google se queja de que quiere que la llamada se realice a través de SSL, pero cuando agrego el s todo funciona como se esperaba.


const request = require(''request''); request.post({ url: strRSAUrl, agentOptions: { ca: fs.readFileSync(''path-to-cacert.pem'') }, form: { some_key: some_value, } }, function (error, response, body) { objResponse.send(body); });

Para más detalles, puede referirse desde la nodejs#request de nodejs#request