CentOS 7でLibreSSLを用いたHTTP/2対応してコケかけた話

このサイトを始めとして、私が管理しているWebサーバー(レンタルサーバー除く)ではnginxを利用しています。特に、このサイト(focusmark.jp)は静的ページで構成されていることもあるため、利用しています。HTTP/2を利用するためにはTLSを拡張している技術を用いる必要があり、私の場合は独自ビルドをして対応をするときに発生したTipsです。

LibreSSLを用いなければそれなりに情報がある

普通にビルドするのであればこのスクリプトを用いることで確実にビルドできますし、確実だと思います。常にアップデートされているため、これを利用するのがベストだと思います。

また、初めて構築される方はあえてUbuntuで構築したほうが良いと思います。というのも、こんな面倒なことしなくてもいいですし、その時間もっとサーバー管理だったりプログラミングだったりそういうことに使えると思います。あと、あちらのほうがcertbotがまともに動くと思われます。(爆弾発言)

コード

上がBefore、下がAfterなのですが、コマンドを学んでいるうちにsed -i -eで解決するような気がするのと、下のコードでLIBRESSLのバージョンが最新のものを引っ張ってきているのに古いバージョンが使われているため、 まだ改善の余地はありそうです…。

※ 上のコードは動きません。また、下のコードを使用するときはnginx 1.11.8をビルドした時に出るSPECファイルを再利用しています。

大変だったこと・学んだこと

ベースがあったのでそこまで苦労していない…といわれるとそこまでですが、途中からbuildできなくなってしまったため、SPECファイルだけ古いバージョンのものを利用しています。(1.11.8)

また、古いバージョンを利用しているということから、sedコマンドで書き換えを行っています。その時に、シングルクォーテーションで書いてたせいでバージョンの置換ができなかったというヘマを行ってしまいました。

変数を新たに定義する時に$マークを付けるだけで数値が入り、結合するため、今後シェルスクリプトを書くときには参考にしたいです。内製していたコードから久しぶりにgistを見たらPerlっぽいようなコードを書いてforkしている方Dockerを利用してビルドして配布されていた方もおられたため、至らないな、と深く猛省しております。

今後やりたいこと

  • 開発環境の整備(VBox)
  • 検証環境の作成(さくらのクラウド)
  • 独自レポジトリの作成(CentOSで管理しているサーバー台数がそこまで多くないのでおそらくムリ)
  • 管理画面などをCertbotにする、静的サイトジェネレータの導入(など)