16

lua スクリプトを使用して、SSL 対応サーバーでページを取得しようとしています。サーバーには自己署名証明書があることに注意してください。信頼できる CA によって発行された証明書で問題ありません。

local https = require("socket.http")
local resp = {}
local r, c, h, s = https.request{
    url = "https://my-server:443/example.php",
    sink = ltn12.sink.table(resp),
    protocol = "tlsv1"
}

サーバーは以下を返します。

不正なリクエスト お使いのブラウザが、このサーバーが理解できないリクエストを送信しました。理由: SSL が有効なサーバー ポートに対してプレーン HTTP を使用しています。代わりに HTTPS スキームを使用してこの URL にアクセスしてください。

サーバー側では、そのリクエストによって Apache ssl_access.log にこのエントリが生成されます

192.168.0.150 - - [27/Nov/2011:16:32:07 +0100] "GET /" 400 529 "-" "-"

さらに、tcpdump は、SYN-ACK ハンドシェイクの後、noSSL 257 Client Helloが送信されることを示しています。ブラウザまたは wget で同じ URL を使用すると問題なく動作します。

4

4 に答える 4

14

Doug Currie が言ったように、luasecを使用する必要があります。を有効にするには、モジュールhttps.requestを要求する必要があります。ssl.https

local https = require 'ssl.https'
local r, c, h, s = https.request{
    url = "https://my-server:443/example.php",
    sink = ltn12.sink.table(resp),
    protocol = "tlsv1"
}
于 2011-11-27T21:18:02.227 に答える
7

luasecを使用して luasocket https クライアントのサポートを追加する方法を説明しているこの lua-l スレッドを参照してください。

于 2011-11-27T16:46:04.907 に答える
1

より現代的な解決策は、lua-http を使用することです: https://github.com/daurnimator/lua-http

luasocket/luasec 互換のインターフェイスが付属しています。

于 2016-07-23T00:14:54.777 に答える