Request: μš”μ²­ λͺ¨λ“ˆμ—μ„œ HTTPS ν˜ΈμΆœν•˜κΈ°

에 λ§Œλ“  2017λ…„ 01μ›” 08일  Β·  12μ½”λ©˜νŠΈ  Β·  좜처: request/request

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 μž…λ‹ˆλ‹€.

stale

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이 문제λ₯Ό ν•΄κ²°ν•˜λ €λ©΄ SSL μΈμ¦μ„œκ°€ μœ νš¨ν•΄μ•Ό ν•œλ‹€λŠ” μš”κ΅¬ 사항을 λΉ„ν™œμ„±ν™”ν•˜κ³  λͺ¨λ‘ λ¬΄μ‹œν•©λ‹ˆλ‹€. λ‹€μŒκ³Ό 같이 "strictSSL: false"λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.

{  
   url: "https://...",
   method: "POST",
   headers: {
        "Content-Type": "application/json"},
   strictSSL: false
}

λͺ¨λ“  12 λŒ“κΈ€

μ„€μ •ν•˜μ—¬ μ‹œλ„ ν–ˆμŠ΅λ‹ˆκΉŒ?
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});

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰