LoginSignup
2
2

More than 5 years have passed since last update.

LibreSSL で SSL/TLS 対応の Webサーバを設定する(OpenBSD編)

Posted at

LibreSSL と Webサーバの組み合わせはまだまだ普及しておらず情報もあまり見かけません。
なので LibreSSL を使った SSL/TLS 対応の Webサーバの設定について調べてみます。


環境

最初から LibreSSL が組み込まれている OpenBSD ならとっても簡単!?
最新の OpenBSD 5.9 を使ってやってみました。

OS の入手

OpenBSD 5.9 のインストールは以下のサイトで一覧されている Mirror サイトから i386/install59.iso をダウンロードして行いました。
http://www.openbsd.org/ftp.html

httpd について

OpenBSD は 5.6 以降、ライク フローターさんという方が開発した独自の httpd を提供しており FastCGI と TLS がサポートされています。
HSTS (HTTP Strict Transport Security) にも対応しています。
(詳しくは man httpd でマニュアルを参照)

この httpd の紹介スライド
Introducing OpenBSD's new httpd - AsiaBSDCon 2015 (PDF)

今回はこの httpd を使って、コンパイルや追加インストールなしでの SSL/TLS 対応 Webサーバの設定を紹介します。

設定手順

(1) サーバの秘密鍵と証明書を作る

LibreSSL の openssl コマンドを使って秘密鍵とサーバ証明書(自己署名証明書、いわゆるオレオレ証明書)を生成します。

# openssl genrsa -out server.key 2048
# openssl req -new -key server.key -out server.csr
# openssl x509 -days 30 -req -signkey server.key -in server.csr -out server.crt

(2) サーバの秘密鍵と証明書を配置する

上で生成したサーバの秘密鍵と証明書を所定のディレクトリに置きます。

# mv server.key /etc/ssl/private/
# mv server.crt /etc/ssl/

(3) Webサーバの設定をする

httpd の設定ファイルを編集して、SSL/TLS 通信の設定を行います。

/etc/httpd.conf
server "default" {
        listen on * port 80
        listen on * tls port 443
        root "/htdocs"
        tls certificate "/etc/ssl/server.crt"
        tls key "/etc/ssl/private/server.key"
}

(上記以外の設定項目は man httpd.conf で参照できます。)

(4) テスト用の html を作成する

テスト表示用に index.html を作成しておきます。

/var/www/htdocs/index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>LibreSSL WWW TLS test</title>
  </head>
  <body>
    <div align="center">
      <img src="libressl.jpg">
      <h1>LibreSSL WWW TLS test</h1>
    </div>
  </body>
</html>

これで設定は完了です。

動作確認

/etc/rc.d/httpd -f start で Webサーバを起動して SSL/TLS 接続できるか動作確認してみます。

Web ブラウザで接続してみる

https (443番ポート) にアクセスするとテスト用に作成したhtmlが表示されるはずです。

s_client で接続してみる

SSL/TLS での通信を確認するために openssl s_client で接続してみます。
暗号スイートとして 'CHACHA20' も指定してみました。

# openssl s_client -port 443 -cipher 'CHACHA20'
CONNECTED(00000003)

... <略> ...

---
No client certificate CA names sent
---
SSL handshake has read 1700 bytes and written 372 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-CHACHA20-POLY1305
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-CHACHA20-POLY1305

... <略> ...

TLSv1.2 と ECDHE-RSA-CHACHA20-POLY1305 で接続できていることを確認できました。
暗号スイートとして 'CAMELLIA' を指定することもできます。

まとめ

LibreSSL 使うなら OpenBSD が手っ取り早いというお話でした。
実際的なニーズとしては「Apache や Nginx で使いたい」でしょうか。
これらも調査していかないといけません。

2
2
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
2
2