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にアクセスしてください。
そしてサーバー側では、そのリクエストはApachessl_access.logにこのエントリを生成します
192.168.0.150 - - [27/Nov/2011:16:32:07 +0100] "GET /" 400 529 "-" "-"
さらに、tcpdumpは、SYN-ACKハンドシェイク後、SSL 257 Client Hello
が送信されないことを示しています。私のブラウザまたはwgetで同じURLを使用しても問題ありません。
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"
}
luasec を使用してluasockethttpsクライアントのサポートを追加する方法を説明している このlua-lスレッド を参照してください。
このような
local https = require("ssl.https")
local one, code, headers, status = https.request{
url = "https://www.test.com",
key = "/root/client.key",
certificate="/root/client.crt",
cafile="/root/ca.crt"
}
より現代的な解決策は、luaを使用することです-http: https://github.com/daurnimator/lua-http
Luasocket/luasec互換のインターフェースが付属しています。