Request: Ошибка: самоподписанный сСртификат Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ сСртификатов

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 5 Ρ„Π΅Π²Ρ€. 2016  Β·  14ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: request/request

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои запросы ΠΊ сСрвСру с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Charles Proxy. Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ TSL, поэтому Ρƒ мСня Π΅ΡΡ‚ΡŒ классичСский ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСртификат, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ чистый Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

NodeJS/Request это Π½Π΅ нравится, поэтому ΠΌΠΎΠΉ скрипт Π½Π΅ запускаСтся ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Как я ΠΌΠΎΠ³Ρƒ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это?

                console.log('Response status: ' + response.statusCode);
                                                          ^
TypeError: Cannot read property 'statusCode' of undefined
    at Request._callback (/xxx:88:59)
    at self.callback (/xxx:199:22)
    at Request.emit (events.js:107:17)
    at Request.onRequestError (/xxx:821:8)
    at ClientRequest.emit (events.js:107:17)
    at TLSSocket.socketErrorListener (_http_client.js:271:9)
    at TLSSocket.emit (events.js:107:17)
    at TLSSocket.<anonymous> (_tls_wrap.js:942:18)
    at TLSSocket.emit (events.js:104:17)
    at TLSSocket._finishInit (_tls_wrap.js:460:8)
Error: Error: self signed certificate in certificate chain
Help (please use Stackoverflow)

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Бпасибо Π·Π° объяснСниС. Π― ΡƒΠ·Π½Π°Π», ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ сСртификатами, Ссли ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ интСрСсно:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

ΠŸΡ€ΠΈ этом я ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°Π»ΡŒΡˆΠΈΠ²ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ SSL для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΎΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром.

ВсС 14 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π² этом случаС response Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ.
ΠΎΡ‚Π²Π΅Ρ‚ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½.
ΠΎΡ‚Π²Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ фактичСский ΠΎΡ‚Π²Π΅Ρ‚.
Ссли ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° какая-Ρ‚ΠΎ ошибка ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, это Π½Π΅ Ρ‚Π°ΠΊ.

ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π»ΠΈ error ΠΈΠ»ΠΈ response.statusCode большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 400.

Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ это использованиС

env NODE_DEBUG="*" node asdf.js

Бпасибо Π·Π° объяснСниС. Π― ΡƒΠ·Π½Π°Π», ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ сСртификатами, Ссли ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ интСрСсно:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

ΠŸΡ€ΠΈ этом я ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°Π»ΡŒΡˆΠΈΠ²ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ SSL для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΎΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром.

Моя ошибка Π±Ρ‹Π»Π° ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΉ, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я Π² порядкС, спасибо @nmaxcom

Ошибка: Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сСртификат
ΠΏΡ€ΠΈ ошибкС (Ρ€ΠΎΠ΄Π½ΠΎΠΉ)
Π² TLSSocket.(_tls_wrap.js:929:36)
Π² TLSSocket.emit (events.js:104:17)
Π² TLSSocket._finishInit (_tls_wrap.js:460:8)

ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ let's encrypt, сСртификаты, подписанныС Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΌ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ сСртификации.
самоподписанныС сСртификаты сСйчас Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ смысла.

request.get({ uri: 'https://mydocker.com/v2/_catalog', rejectUnauthorized: false }

Для самоподписанного Π¦Π‘ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ 'rejectUnauthorized = false'.
ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ request.js Π² строкС 623 ΠΈ _tls_wrap.js Π² node.js.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹:
Π°) Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ†ΠΈΡŽ SSL Π½Π° балансировщикС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ
Π±) Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ бСсплатный сСртификат

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ Сдиная конфигурация для всСх Π²Π°ΡˆΠΈΡ… срСд.
Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² своих развСртываниях ΠΈ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚Π΅ ошибки Ρ€Π°Π½ΡŒΡˆΠ΅.

rejectUnauthorized Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² options.rejectUnauthorized = false
Π½ΠΎ Π½Π΅ Π² options.agentOptions.rejectUnauthorized = false

Π½Π΅ знаю ΠΏΠΎΡ‡Π΅ΠΌΡƒ 😒

https://github.com/request/request/blob/v2.81.1/request.js#L257 -L259

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, смотритС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄. Π― понимаю, Ρ‡Ρ‚ΠΎ strictSSL β€” это просто псСвдоним rejectUnauthorized
Π”ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΏΠ»ΠΎΡ…ΠΎΠ΅ имя, просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ rejectUnauthorized 😭

ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ этой ошибки ΠΏΡ€ΠΈ запускС ΠΊΠΎΠ΄Π°
Ошибка синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°: синтаксичСская ошибка, Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ 'var' (T_VAR), ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° Π² C:xampphtdocsPHPIMAPadminindex.php Π² строкС 146

var notifier = require('mail-notifier');
пСрСмСнная ΠΊΠ°Ρ€Ρ‚Π° = {
имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: "anandlintas2017",
ΠΏΠ°Ρ€ΠΎΠ»ΡŒ: "Ρ…Ρ…Ρ…Ρ…Ρ…Ρ…Ρ…Ρ…Ρ…",
хост: "imap.gmail.com",
ΠΏΠΎΡ€Ρ‚: 993, // imap-ΠΏΠΎΡ€Ρ‚
secure: true // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ бСзопасноС соСдинСниС
};

ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒ(imap).on('ΠΏΠΎΡ‡Ρ‚Π°',функция(ΠΏΠΎΡ‡Ρ‚Π°){console.log(ΠΏΠΎΡ‡Ρ‚Π°);}).start();
?>

для людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ rejectUnauthorized=false, Ρ‡Ρ‚ΠΎ, Ссли Ρƒ мСня Π΅ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ сСрвСры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ соСдинСния Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΠ°ΠΌΠΎΠ·Π°Π²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΌΠΈ сСртификатами, Π΄ΡƒΠΌΠ°ΡŽ, установка rejectUnauthorized Π½Π° false остановит ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½ΠΎ ΠΌΠΎΠΈ соСдинСния Π½Π° 100% ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ Π°Ρ‚Π°ΠΊΠ°ΠΌ MITM, я Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ это ошибка Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ nodejs tls, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° страдаСт, ΠΈ я Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ исправлСния Π½ΠΈΠ³Π΄Π΅ (Ρƒ мСня Π΅ΡΡ‚ΡŒ Google Π½Π° страницС 5 Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Google, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³Π»ΡƒΠ±ΠΎΠΊΠΈ), я Π½Π΅ знаю, ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди Π½Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± этом, я Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ здСсь ΡƒΠΏΡƒΡΠΊΠ°ΡŽ! !!!!! поТалуйста, ΠΏΠΎΠΏΡ€Π°Π²ΡŒΡ‚Π΅ мСня, Ссли я ошибаюсь!!

rejectUnauthorized works in options.rejectUnauthorized = false
but not in options.agentOptions.rejectUnauthorized = false

Оба Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ для мСня

request.get({ uri: 'https://s3.amazonaws.com/...',
    rejectUnauthorized: false,
    // strictSSL: false,
    proxy: '127.0.0.1:8080',
    agentOptions: {
        rejectUnauthorized: false,
        // strictSSL: false,
    },
}, (...args) => {
    console.log(args);
    process.exit();
});

PS Запуск ΠΊΠΎΠ΄Π° ΠΈΠ· ELECTRON с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ Ρ„Π»Π°Π³ΠΎΠΌ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ssl.

Для мСня ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ антивируса ΠšΠ°ΡΠΏΠ΅Ρ€ΡΠΊΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠΈΠ»ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

https://github.com/request/request/issues/2061#issuecomment -182573171 каТСтся ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ Π½Π° ΠΎΠ±Ρ‰ΠΈΠΉ вопрос

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

НС Π΄Π°Π΅Ρ‚ эффСкта.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ