LoginSignup
3
3

More than 5 years have passed since last update.

Caveman2でHTTPS

Posted at

動機とか

Caveman2でLMSっぽいものを作るにあたって,HTTPS使わないと駄目だろうと思って調べたものの,ドキュメントにそれっぽい記述を見つけられませんでした。

Clackのhunchentootのhandlerrunとかを見るとsslを使えそうなので試してみました。

準備

環境

Mac OSX 10.10.1
Clozure Common Lisp 1.10
quicklisp 2014-12-17
OpenSSL 0.9.8za 5 Jun 2014
サーバはHunchentootです。 (tootとwookieでも同様かも?)

証明書作成

最近はOpenSSLから派生したLibreSSLとかGoogleのとかもあるんですね。
とりあえずOpenSSLを使います。
$ openssl genrsa 2048 > oreore.key
$ openssl req -new -key oreore.key > oreore.csr
生成されたcsrファイルを認証局に署名してもらいます。
今回は動けば良いのでオレオレします。
$ openssl x509 -days 3652 -req -signkey oreore.key < oreore.csr > oreore.crt

生成したkeyファイルとcrtファイルはプロジェクト直下にsslディレクトリ作って放り込みました。

アプリケーション側の設定

main.lispあたりにファイルパスを書いておきます。

(defvar *ssl-key-file*
  (merge-pathnames "ssl/oreore.key" myapp.config:*application-root*))

(defvar *ssl-cert-file*
  (merge-pathnames "ssl/oreore.crt" myapp.config:*application-root*))

これだけ。あとは

>(start :port 5000 :ssl t :ssl-key-file *ssl-key-file* :ssl-cert-file *ssl-cert-file*)

すれば動くはずです。
(password設定した場合は:ssl-key-password "password"を追加します。)
これでhttps://localhost:5000/にアクセスすると,
見事にブラウザに怒られて,

[2014-12-31 01:48:01 [ERROR]] Error while processing connection: A failure in the SSL library occurred on handle #<A Foreign Pointer #x626B60> (return code: 1). SSL error queue:
error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca

なんて言われます。オレオレなので我慢します。
ブラウザで例外を許可すればサイトを見れます。
(Chromeだとこの段階で証明書の中まで見れるんですね。)

ちなみに:port 443を指定すると

Error #<USOCKET:OPERATION-NOT-PERMITTED-ERROR #x302003EFD40D>
   [Condition of type USOCKET:OPERATION-NOT-PERMITTED-ERROR]

ですって。めんどくさそうなのでport 5000で使う事にします。

おわりに

とりあえず動いたので満足です。
本番では証明書はちゃんと買う予定です。

当初は自分でコード書かないと駄目だろうと思っておっかなびっくりソース読んでたのですが,
結局1行も書かずに済みました。

これで安心してフォーム認証ができます。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3