request
λͺ¨λμ μ¬μ©νμ¬ $ https
νΈμΆμ μλνκ³ μμ΅λλ€. μλλ νμ¬ κΈ°μ‘΄ μ΅μ
μ
λλ€.
κ·Έλ¦¬κ³ pfx
νμΌκ³Ό password
κ° μμ΅λλ€.
strictSSL: false,
rejectUnauthorized: false,
agent: false
λκ΅°κ°κ° λͺ¨λ trueλ‘ μ€μ ν΄μΌ νλ κ²κ³Ό cert
νμΌμ λ΄λ³΄λ΄μΌ νλ κ²μ λν΄ μ λ₯Ό λμμ€ μ μμ΅λκΉ?
κ°λ₯νλ©΄ openssl
λͺ
λ Ήμ 곡μ νμμμ€.
cert
λ΄λ³΄λ΄κΈ°λ₯Ό μλνκ³ strictSSL and rejectUnauthorized true
μ λ§λ€μμ§λ§ κ²°κ΅ λ€μκ³Ό κ°μ μ€λ₯κ° νμλ©λλ€.
message: 'Error: unable to verify the first certificate'
λ
Έλ λ²μ μ 6.9.2
μ
λλ€.
μ€μ νμ¬ μλ νμ΅λκΉ?
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'
@rpgeeganage μ΄κ²μ μ νΈνλ λ°©λ²μ΄ μλλλ€.
μ 체 μ€λ₯ μ€ν
{ Error: unable to verify the first certificate
at Error (native)
at TLSSocket.<anonymous> (_tls_wrap.js:1085:38)
at emitNone (events.js:86:13)
at TLSSocket.emit (events.js:185:7)
at TLSSocket._finishInit (_tls_wrap.js:603:8)
at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:433:38) code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' } 'error'
λλμ΄ λ¬Έμ κ° λ°μνμ΅λλ€. @tomalex0 ν΄κ²° λ°©λ²μ μ°Ύμμ΅λκΉ?
μ΄μ λν μ λ°μ΄νΈκ° μμ΅λκΉ?
μ λ μ΄ λ¬Έμ λ₯Ό μ νμ΅λλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄ SSL μΈμ¦μκ° μ ν¨ν΄μΌ νλ€λ μꡬ μ¬νμ λΉνμ±ννκ³ λͺ¨λ 무μν©λλ€. λ€μκ³Ό κ°μ΄ "strictSSL: false"λ₯Ό μΆκ°ν©λλ€.
{
url: "https://...",
method: "POST",
headers: {
"Content-Type": "application/json"},
strictSSL: false
}
λ΄ μλ²λ μ¬μ€ λ€νΈμν¬(μΈν°λ· μ‘μΈμ€ μμ)μ μκ³ κ±°κΈ°μμ μλν΄μΌ νλ©° μΈμ¦μμ μλͺ
νκ³ μ체 CAλ‘ μ΄λ₯Ό μ λ’°ν©λλ€...ca.pem νμΌμ μΆκ°ν΄λ UNABLE_TO_VERIFY_LEAF_SIGNATURE
μ€λ₯κ° λ°μν©λλ€. options.agentOptions.caλ‘ μ΄λν©λλ€. strictSSL μ΅μ
μ΄λ κΈ°ν μμ νμ§ μμ μ΅μ
μ λΉνμ±ννμ§ μκ³ μ΄ μ€λ₯λ₯Ό ν΄κ²°νλ €λ©΄ μ΄λ»κ² ν΄μΌ ν©λκΉ?
μ κ²½μ°μλ LetsEncryptλ‘ μμ±ν SSL μΈμ¦μκ° λ Έλ https λΌμ΄λΈλ¬λ¦¬ λλ μμ² λΌμ΄λΈλ¬λ¦¬μμ μ μλν©λλ€. κ·Έλ¬λ ν¬νΈ 443μμ λμΌν μΈμ¦μλ₯Ό μ¬μ©νλ©΄(λ΄ μμ€ν μ Golang κ΅¬μ± μμμμ μ λλ‘ μλνκ³ Chromeμμ μ λλ‘ μλν¨) λμΌν μ€λ₯λ‘ Nodeμ https λΌμ΄λΈλ¬λ¦¬μ μμ² λΌμ΄λΈλ¬λ¦¬λ₯Ό μμ ν μ§μμν΅λλ€. λλ μ¬μ ν μ¬κΈ°μ 무μμ΄ μλͺ»λκ³ μλμ§ μ΄ν΄νλ €κ³ λ Έλ ₯νκ³ μμ§λ§ μ μ΄λ μ΄ κ²½μ°μλ μ΄λ¬ν λ£¨νΈ CA ν΄νΉμ΄ μλνμ§ μλ κ² κ°μ΅λλ€.
μ΄ λ¬Έμ λ μ΅κ·Ό νλμ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ€λλ κ²μΌλ‘ νμλμμ΅λλ€. λ μ΄μ νλμ΄ μμΌλ©΄ νμλ©λλ€. κ·νμ κΈ°μ¬μ κ°μ¬λ립λλ€.
μ무λ κ·Έκ²μ λ무 κ°κΉμ΄μ κ²°μ½ μΌμ΄λμ§ μμ μ² λ°λΌκ° μ¬λμ΄ μμ΅λκΉ?
λ΄ URLμ λͺ¨λ λΈλΌμ°μ μμ μ λλ‘ μλνμ§λ§ "request.js"λ μλνμ§ μμ΅λλ€.
λλ κ°μ μ€λ₯κ° λ°μνμ΅λλ€. strictSSLμ falseλ‘ νμνμ¬ μμ νμ΅λλ€. μλ μ½λκ° μ μκ² ν¨κ³Όμ μ΄μμ΅λλ€.
var ν΄λΌμ΄μΈνΈ = μλ‘μ΄ RestClient({
μ°κ²°: {
pfx: fs.readFileSync(certFile),
μνΈ: certPassword,
μ격ν SSL: κ±°μ§,
κ±°λΆ κΆν μμ: κ±°μ§,
μμ΄μ νΈ: κ±°μ§
}
});
λ΄ APIμ λ Έλ λλ¨Έμ§ ν΄λΌμ΄μΈνΈ μν€ν μ²λ₯Ό μ¬μ©νκ³ μμ΅λλ€.
μ΄κ²μ΄ μ μ¬ν μμ μ¬νμ μ°Ύλ μ¬λμκ² λμμ΄ λκΈΈ λ°λλλ€.
μ΄ μλ:
var μμ² = require("μμ²").defaults({rejectUnauthorized:false});
κ°μ₯ μ μ©ν λκΈ
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄ SSL μΈμ¦μκ° μ ν¨ν΄μΌ νλ€λ μꡬ μ¬νμ λΉνμ±ννκ³ λͺ¨λ 무μν©λλ€. λ€μκ³Ό κ°μ΄ "strictSSL: false"λ₯Ό μΆκ°ν©λλ€.