node-request モジュールを使用して、GET要求を一連のURLに定期的に送信し、一部のサイトで以下のエラーを取得する場合があります。
Error: 29472:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:683
問題は、このエラーが常に発生するわけではなく、一部のURLで常に発生しないことです。また、「strictSSL: false
」では無視できません。
これは、間違ったプロトコル(SSLv2、SSLv3、TLS ..)でSSL要求を送信することに関連している可能性があることを読みました。しかし、これはそれが不規則に起こる理由を説明しません。
ところで、私はWin 2008サーバーでnodejsを実行しています。
どんな助けも大歓迎です。
これは完全に私の悪でした。
Httpアドレスのみにリクエストを送信するコードの一部で標準ノードhttp.requestを使用していました。 dbにはランダムな間隔で照会された単一のhttpsアドレスがあったようです。
単純に、httpsにhttpリクエストを送信しようとしていました。
80などの間違ったポートを介してHTTPSリソースを要求すると、このようなエラーメッセージが表示されます。そのため、要求オプションで正しいポート443を指定したことを確認してください。
一部のサイトはSSLv2を使用しているか、少なくともSSLv2サーバーハローを送信していますが、クライアントはSSLv2を使用しないか、使用するように構成されていません。ここでポリシーを決定する必要があります。 SSLv2は数年前に地球の表面から姿を消したはずであり、それをまだ使用しているサイトは安全ではありません。ただし、彼らと話をする必要がある場合は、可能であれば、最後に有効にする必要があります。できればサイト所有者に文句を言うでしょう。
この問題(パッケージごとに403エラー)がありましたが、インターネットでそれを解決するものはありませんでした。 ユーザーフォルダー内の.npmrc
ファイルが間違っていて誤解されていました。このnpmrc行を
proxy=http://XX.XX.XXX.XXX:XXX/
に:
proxy = XX.XX.XXX.XXX:XXXX
require('https')
を使用していたはずの場所でrequire('http')
を使用していたため、このエラーが発生しました。
var https = require('https');
https.globalAgent.options.secureProtocol = 'SSLv3_method';
私の場合(WebサイトSSLはev曲線を使用)、SSLの問題はこのオプションを追加することで解決されましたecdhCurve: 'P-521:P-384:P-256'
request({ url,
agentOptions: { ecdhCurve: 'P-521:P-384:P-256', }
}, (err,res,body) => {
...
JFYI、これは誰かを助けるかもしれない
Amazon RDSへの接続中にこのエラーが発生しました。サーバーが開発サーバーであり、誰も使用していないときに、CPU使用率の50%のサーバーステータスを確認しました。
以前は機能していましたが、接続構成の変更はありません。サーバーを再起動すると問題が解決しました。
要するに、
vi ~/.proxy_info
export http_proxy=<username>:<password>@<proxy>:8080
export https_proxy=<username>:<password>@<proxy>:8080
source ~/.proxy_info
これが急いで誰かを助けることを願っています:)