kusanagi ssl で簡単に SSL 設定を行う

片倉洋一

本稿では、KUSANAGIの操作コマンドである「kusanagi ssl コマンド」の使用方法を詳細に解説します。このコマンドは、Webサイトにおける重要なSSL設定をコマンドラインで簡単に行うことができます。また、SSL証明書発行、証明書の自動更新、任意の証明書設置、HTTP から HTTPSへのリダイレクト設定など、主な機能を具体的なコマンドとともに紹介しています。HSTSやSSL証明書の透明性設定等サイトの安全性を高める機能についても触れており、便利な資料となっています。

今回紹介するのは kusanagi ssl コマンドです。

kusanagi ssl コマンドは KUSANAGI の SSL の設定をコマンドラインから操作するコマンドです。
SSL の設定は Web サイトにはとても重要なことですが、煩雑な内容が多く、1つの設定ミスがサイト全体にとって致命的なことになりうる重要な設定です。
その設定をコマンドラインで簡単に設定できるのが kusanagi ssl コマンドです。

それでは kusanagi ssl コマンドでできることを一つずつ見ていきましょう。

Let’s Encrypt の SSL 証明書発行

対象のサーバにまだ SSL 証明書が発行されていない場合に、以下のコマンドを実行することで Let’s Encrypt (※) から自動かつ無料で証明書を発行して設置されます。
なお、発行には有効なメールアドレスが必要です。

※Let’s Encrypt とは、公共の利益のために運営されている、フリーで自動化されたオープンな認証局 (certificate authority; CA) です(公式HPより)

# kusanagi ssl --email saya@example.com kusanagi_html

--email オプションに有効なメールアドレスを指定し、最後に対象とするプロファイル名を指定します。

これで、 対象のプロファイルに対して Let’s Encrypt から SSL 証明書が発行および設置され、 Web サーバの設定も変更されます。
下記の「Let’s Encrypt の SSL 証明書の自動更新設定」も同時に行われます。

Let’s Encrypt の SSL 証明書の自動更新設定

注意:最初に説明した「Let’s Encrypt の SSL 証明書発行」により Let’s Encrypt の SSL 証明書を取得・設定した場合は、自動的に自動更新が有効になっていますので、改めて自動更新を有効にする必要はありません。

Let’s Encrypt で取得した SSL 証明書の自動更新を有効にしたい場合は、以下のコマンドを実行します。

# kusanagi ssl --auto on kusanagi_html

--auto オプションには on を指定し、最後に対象とするプロファイル名を指定します。
これで、Web サーバの設定が変更され Let’s Encrypt の SSL 証明書自動更新が有効になります。

反対に、 Let’s Encrypt で取得した SSL 証明書の自動更新を無効にしたい場合は、以下のコマンドを実行します。

# kusanagi ssl --auto off kusanagi_html

--auto オプションには off を指定し、最後に対象とするプロファイル名を指定します。
これで、Web サーバの設定が変更され Let’s Encrypt の SSL 証明書自動更新が無効になります。

任意の SSL 証明書の設置

対象のサーバの SSL 証明書を任意の認証局から取得したい場合は、証明書を取得後に以下のコマンドを実行することで自動的に設置されます。
取得した証明書ファイルと鍵ファイルはあらかじめサーバーに置いておく必要があります。

# kusanagi ssl --cert combined.crt --key servername.key kusanagi_html

--cert オプションに証明書ファイルのパス、 --key オプションに鍵ファイルのパスを指定し、最後に対象とするプロファイル名を指定します。
これにより、対象のプロファイルに対して指定のファイルを適切な場所に設置し、Web サーバの設定も変更されます。

なお、この --cert オプションと --key オプションは必ず同時指定する必要があります。
先ほどの --email オプションと同時使用はできません。

HTTP から HTTPS へのリダイレクト設定

対象のサイトに http:// でサイトにアクセスした場合に https:// に 301 リダイレクト(※)させたい場合には以下のコマンドを実行することでリダイレクト設定がされます。

※301 リダイレクトとは Moved Permanently ということで、恒久的な移動という意味になります。
参考:301 Moved Permanently – HTTP | MDN

# kusanagi ssl --https redirect kusanagi_html

--https オプションには redirect を指定し、最後に対象とするプロファイル名を指定します。
これで、Web サーバの設定が変更され 301 リダイレクトが有効になります。

反対に、現在 http:// でサイトにアクセスした場合に https:// にリダイレクトさせていて、リダイレクトをさせたくない場合は以下のコマンドを実行することでリダイレクトの設定が削除されます。

# kusanagi ssl --https noredirect kusanagi_html

--https オプションには noredirect を指定し、最後に対象とするプロファイル名を指定します。
これで、Web サーバの設定が変更され 301 リダイレクトが無効になります。

HSTS (HTTP Strict Transport Security) の設定

まず、 HSTS とは HTTP Strict Transport Security の頭文字を取った言葉で、その内容を以下に簡単に説明します。
先ほどの http:// から https:// のリダイレクトには問題があり、一瞬ですが http:// でアクセスすることです。
それを悪意ある人間により利用され、本来リダイレクトされるべきサイトではなく悪意のあるサイトへ誘導される可能性があります。
それを防ぐために、 HSTS ヘッダーを設定することにより既に一度でも対象のサイトで https:// でアクセスしていたのなら、リダイレクトせずにブラウザが判断して自動的に https:// でアクセスするように変更されます。
さらに、初回から http:// でアクセスしても https:// でアクセスする仕組みとして HSTS プリロードという仕組みがあります。
HSTS プリロードとは、 HSTS プリロードリスト登録サイトに対象のサイトのドメインを登録することで、初回に http:// でアクセスしてもブラウザが判断して自動的に https:// でアクセスされるようになります。
参考:Strict-Transport-Security – HTTP | MDN

対象のサイトに HSTS の設定を有効にしたい場合は、以下のコマンドを実行することで HSTS が有効になります。

# kusanagi ssl --hsts on kusanagi_html

--hsts オプションには on を指定し、最後に対象とするプロファイル名を指定します。
これで、Web サーバの設定が変更され HSTS が有効になります。
HSTS を有効にしたら HSTS Preload リスト登録サイトに対象サイトのドメインを登録することを強く推奨します。

反対に、対象のサイトに HSTS の設定を無効にしたい場合は、以下のコマンドを実行することで HSTS が無効になります。

# kusanagi ssl --hsts off kusanagi_html

--hsts オプションには off を指定し、最後に対象とするプロファイル名を指定します。
これで、Web サーバの設定が変更され HSTS が無効になります。

SSL 証明書の透明性オプションの設定

まず、 SSL 証明書の透明性とは Certificate Transparency と呼ばれ、サーバー証明書の発行状況を監視・監査するための仕組みです。
認証局が発行するサーバー証明書の情報を公開ログサーバー(Certificate logs)に登録することで、インターネットユーザーであれば誰でも確認できる状態になり、認証局やドメイン名の登録者が意図しないサーバー証明書発行の事故・トラブルを早期発見することができます。
参考:Certificate Transparencyについて | JPRS

対象のサイトに SSL 証明書の透明性オプションの設定を有効にしたい場合は、以下のコマンドを実行することで SSL 証明書の透明性オプションが有効になります。
なお、事前に有効な SSL 証明書が設定されていることが必要です。

# kusanagi ssl --ct on kusanagi_html

--ct オプションには on を指定し、最後に対象とするプロファイル名を指定します。
これで、Web サーバの設定が変更され SSL 証明書の透明性オプションの設定が有効になります。
その際、 SCT (※)を生成およびログサーバへの登録も行われます。
※SCT: Signed Certificate Timestamp(サーバー証明書のデータが格納されたことを保証するタイムスタンプ情報)

もし、SCT の生成をおよびログサーバへの登録を行わず、Web サーバの設定のみを変更したい場合は以下のコマンドを実行します。

# kusanagi ssl --ct on --no-register kusanagi_html

--no-register オプションは --noregister でも可能です。
なお、 --no-register オプションは --ct オプションでのみ利用可能です。

これで、Web サーバの設定が変更され SSL 証明書の透明性オプションの設定が有効になり、SCT の生成およびログサーバへの登録は行われません。

反対に、 SSL 証明書の透明性オプションを無効にしたい場合は、以下のコマンドを実行します。

# kusanagi ssl --ct off kusanagi_html

--ct オプションには off を指定し、最後に対象とするプロファイル名を指定します。
これで、Web サーバの設定が変更され SSL 証明書の透明性オプションの設定が無効になります。

kusanagi ssl コマンドでできることは以上になります。

HSTS や SSL 証明書の透明性など SSL 証明書だけではない、サイトの安全性を高める仕組みも網羅していますので、皆様ぜひとも活用してみてください。

KUSANAGI 9 コマンドのマニュアル (ssl) :https://kusanagi.tokyo/kusanagi9/document/commands/#ssl

<< kusanagi monitで行うサーバー監視解説KUSANAGIコマンドの実行結果を確認する >>

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解