Let’s EncryptでSSLサーバ証明書を取得する。

Let’s Encryptを利用してSSLサーバー証明書を取得しました。取得した際の環境は以下です。

CentOS 7.4 + Apache 2.4.6

なお、Apacheにはバーチャルホストが設定してあって、SSLサーバー証明書の取得の作業はrootユーザで行います。

1. firewalldの停止

証明書取得の際、Let’s Encryptのサーバーと通信を行うためfirewalldは停止しておきます。80番ポート、443番ポートを通過させる設定になっていればfirewalldの停止は不要です。

firewalldの停止
# systemctl stop firewalld

firewalldの停止の確認
# systemctl is-active firewalld

「unknown」と表示されれば停止してます。起動している場合は「active」と表示されます。

2. mod_sslのインストール

/etc/httpd/conf.d 配下にssl.confがないことを確認します(あったらすでにmod_sslはインストール済みです)。

mod_sslのインストール
# yum install mod_ssl

インストールが完了すると、以下の2ファイルができます。

/etc/httpd/conf.d/ssl.conf
/etc/httpd/conf.modules.d/00-ssl.conf

mod_sslを有効にするためApacheを再起動します。

Apacheの再起動
# systemctl restart httpd

Apacheの起動の確認
# systemctl is-active httpd

「active」と表示されていることを確認します。

[広告]

3. certbotのインストール

Let’s EncryptでSSLサーバー証明書を取得してくるプログラムは「certbot」です。これをインストールします。certbotはepelリポジトリにあるため、まずepelリポジトリのインストールを行います。

epelリポジトリのインストール
# yum install epel-release

epelリポジトリのインストールができたら、certbot本体とcertbot用のApacheのプラグインをインストールします。ここで、プラグインのほうが以下の2種類があるようで、どちらのものが使用されるのか先に確認を行います。

certbot用のApacheのプラグイン
・python-certbot-apache
・python2-certbot-apache

どちらのプラグインが使用されるのか確認する。
# yum search certbot

以下が実行したときのログです。赤線部分を見ることでどちらかわかります。

僕の環境ではpython2-certbot-apacheが使われるようなので、これとcertbot本体をインストールします。

certbot本体のインストール
# yum install certbot

プラグインのインストール
# yum install python2-certbot-apache

念の為、インストールの結果を確認しておきます。

インストール後の確認
# yum list installed | grep certbot

僕の環境では、以下のようになりました。

certbotのインストール先を見ておきます。

配置先の確認
# which certbot

/bin 配下に置かれているようです。

[広告]

4. SSLサーバー証明書の発行

SSLサーバー証明書の発行は以下のコマンドで実行します。

SSLサーバー証明書の発行
# certbot certonly --webroot -w /var/www/html/example -d example.com -d www.example.com

コマンドの説明をしておくと「/var/www/html/example」はドキュメントルートになりますので自分の環境に合わせて書き換えてください。また「-d」オプションですが証明書を取得するドメイン名を指定します。上記の例だと「example.com」および「www.example.com」の2つに対して証明書を取得するようにしています。ドメイン名についても自分のドメインにあわせて書き換えてください。

なお、certbotコマンドを実行する前にドメインの名前解決ができるようにしておいてください(DNSで名前解決できるようにしておく)。それをしておかないとcertbot実行時にエラーになってしまいますので。

certbotコマンドを実行すると以下の質問を受けますので、内容を確認して入力をしてください。

①連作先のEmailアドレスを入力します。
②規約に同意するかどうかを選びます。「A」は同意です。
③Let’s EncryptパートナーにEmailアドレスを公開するかどうかを選びます。

証明書の発行が問題なくできれば、以下のメッセージが表示されます。

CentOS 6 の場合だと、Let’s Encryptがhttpd.confやssl.confの書き換えを行って options-ssl-apache.conf を自動生成したりするのですが、CentOS 7 の場合だとhttpd.confやssl.confの書き換えはまったく行われていませんでした。options-ssl-apache.conf もありませんでした。

SSLサーバー証明書ですが、以下の場所にできています。

SSLサーバー証明書の格納先(シンボリックリンク)
/etc/letsencrypt/live/example.com

「example.com」はドメイン名なので自分の環境に合わせて読み替えてください。なお、ここにできているものはシンボリックリンクで実体は別の場所(以下)となります。

SSLサーバー証明書の実体
/etc/letsencrypt/archive/example.com

この証明書の場所をssl.confに記載しておくのですが必要なものは以下となります。fullchain.pemは使いません。

サーバ証明書(公開鍵)
SSLCertificateFile・・・/etc/letsencrypt/live/ドメイン名/cert.pem

秘密鍵
SSLCertificateKeyFile・・・/etc/letsencrypt/live/ドメイン名/privkey.pem

中間証明書
SSLCertificateChainFile・・・/etc/letsencrypt/live/ドメイン名/chain.pem

[広告]

5. ssl.conf、httpd.confの修正

ssl.confの書き換えを行います。すでに80番ポートでバーチャルホストを設定していたものとして、ssl.confの修正内容は以下となります。「example」の部分は自分の環境に合わせて書き換えてください。

①VirtualHostタグの修正
<VirtualHost _default_:443>
 ↓
<VirtualHost *:443>

②ドキュメントルートの追加
DocumentRoot “/var/www/html/example”

③ServerNameの追加
ServerName www.example.com:443

④証明書のパスの追加
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

①〜④を反映させたssl.confの内容

また、80番ポートにアクセスしてきた場合に443番ポートにリダイレクトさせる設定もしておきます。こちらはhttpd.confのVirtualHostタグに以下の情報を追加します。

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,NE,R=permanent]

リダイレクトを反映させたhttpd.confの内容

これで設定は終わりです。Apacheを再起動します。

Apacheの再起動
# systemctl restart httpd

ブラウザでアクセスしてみてください。URLの欄に鍵マークが表示されます。

情報処理安全確保支援士(登録セキスペ)の講習を受講してきました。

情報処理安全確保支援士(登録セキスペ)の「オンライン講習C」と「集合講習」を受講しました。これから受ける方の参考になればと思い感想を書いてみます。

まず申込方法ですが受講料を個人で支払う場合と法人で支払う場合とで手続きが異なります。個人申込の場合は以下のようになります。

  1. IPAからオンライン講習C、集合講習の受講対象者であることのメールが届きます。申込方法が記載されてます。
  2. WEBの個人申込サイトから申込みます。ここで支払方法をコンビニ決済、PayEasy決済、銀行振込のいづれかから選びます。
  3. 支払いを行います。
  4. 入金の確認が行われるとオンライン講習システムへの登録の案内メールが届きます。ここで登録を行うと、講習受講IDと初期パスワードがメールで届きます。このメールにオンライン講習のログインURLが記載されています。
  5. オンライン講習のログインURLからログインして、オンライン講習を受講します。集合講習の申込みもここでできます。オンライン講習が完了していなくても集合講習の申込みはできますが、集合講習を受けるまでにオンライン講習を終了させておく必要があります。

講習の内容ですが、以下のサイトに公開されています。

情報処理安全確保支援士(登録セキスペ)の受講する講習について

オンライン講習Cだと、以下の6つの章がありました(2019年3月時点の場合)。

  • 情報セキュリティの最新動向「情報セキュリティ10大脅威」
  • 情報セキュリティ関連の制度や規格等の動向
  • インシデントハンドリング
  • セキュア設計、セキュア開発の概説
  • 倫理・コンプライアンスの概念
  • 「RFC1087 倫理とインターネット」及び「情報処理学会倫理綱領」概説

— 2019/6/3 追記 —
オンライン講習の内容が、2019/5/27 から2019年度のものに更新されました。変更点は以下とのことです。この記事は2018年度のものになります。

2018年度版教材からの主な変更内容

  • 情報セキュリティの最新動向(OLC1_情報処理安全確保支援士として認識しておくべき脅威や対策に向けての情報収集・活用について)を更新
  • 情報処理安全確保支援士倫理綱領制定に伴い、関連箇所を更新
  • 上記2点に伴う理解度確認テストの最新化

— 追記 ここまで —

オンライン講習はパソコンで受講しました。案内メールだとスマホやタブレットでもできるようです。パワポのスライドみたいなのが何枚かあって「次へ」ボタンを押して読み進めていく感じです。音声が出るのかな?と思ったのですが、音声はなかったです。途中で中断はできて、再開するときには読み進んだスライドのところから始まるのできりが悪くてもやめることはできます。

IPAの想定だと6時間相当とのことですが、僕はもっとかかりました。1章あたり40〜60スライドぐらいあったと思います(真面目に読むと結構かかる)。知っている内容はさっさと飛ばせばよかったかもしれませんが。各章の最後には理解度テストが全部で5問あり全問正解しないと完了になりません。やり直しの問題は5問とも違うものになっていますので、1回目でクリアできるようにちゃんと読んでおいたほうがよいです。また、各章のやっている時間は計られているようです(経過時間が表示されていました)。理解度テストも何回目かカウントされているようです(こちらも何回目の再テストか表示されていました)。

ちなみにオンライン講習ですが受講期間が決められています。申込から3ヶ月以内に終わらせないといけないです。また集合講習を受ける際にはオンライン講習の受講が完了したという証明書が必要です。この証明書はオンライン講習が終了すると印刷できるボタンが表示されるので、印刷して集合講習に持参します。

次に集合講習です。開催場所ですが以下となっていました。

札幌、仙台、東京、新潟、金沢、長野、静岡、名古屋、京都、大阪、神戸、岡山、広島、高松、松山、福岡、那覇

東京は群を抜いて開催回数が多い(月に数回実施)ですが、地方では数カ月に1回しか開催されないところもあります。東京、大阪、名古屋に住んでいる方は候補日を選べるかと思いますが、地方に住んでいる方は開催日に仕事の調整をして参加するか、都市部まで足を運んで参加するしかなさそうです。

僕は東京開催の講習に参加しました。仕事を休み平日に参加しました。定員30名だったのですが平日だったためか、その日の参加者は11名でした。男性が9名、女性が2名でした。座席は決められていて、5名と6名の2グループに分かれました。見た目の判断ですが、参加した皆さんは30代、40代の方のように思えました(中には50代と思える方も)。いま集合講習を受けるということは情報処理安全確保支援士に合格した方々ではなく、情報セキュリティスペシャリストなど以前の試験に合格した方々なので年齢層が高かったのかもしれません。

集合講習の内容ですが、以下です(2019年4月時点の場合)。

  • 事前学習の理解度確認テスト
  • グループ演習のための知識の確認とワーク
  • ケーススタディ①インシデント対応のグループ演習
  • ケーススタディ②予防策の検討のグループ演習
  • ケーススタディ③倫理的な判断・行動に関するグループ演習

講師の方は2名いらっしゃっいました。午前中に理解度確認テストがありますのでオンライン講習でやった内容は復習しておきましょう。テストが悪いからといって何かあるというわけではないようですが、参加者の方はそれなりの正答率だったみたい。僕は7割ぐらいの正答率でした。そのあとに座学でインシデント対応や情報セキュリティにおける倫理を学びました。午前中の最後に午後のグループディスカッションに向けてグループ内で自己紹介をしたのですが、みなさん聞いたことのある会社やグループ企業の方でした。僕も勤務先を言ったのですが、知らんだろうな。

午後はケーススタディにもとづいたグループディスカッションです。グループディスカッションをするにあたり進行役、書記、発表者を決めます(最初は席順で決められます)。グループディスカッションでは、みなさん積極的に発言されていました。講師の方も参加者の様子を見ているようです。全員初対面だったのですが、僕のグループではある方が最初によく喋ってくれたので、なんとなくその方がリーダーシップをとりました。そういう人はいるものですね。。おそらく他の参加者の方もマネージャーとかリーダーを自社に戻ればやっているんだと思いますが。ディスカッションが終わるとグループ内で考えをまとめて発表します。そして質疑応答という一般的な流れでした。

講師の方が言っていましたが、3年後の集合講習ではテーマがまた変わるようです。なのでこのブログを見て集合講習に参加したら内容が違う、となるかもしれませんがご容赦くださいませ。参加してみて、参加した方々と自分のスキルは同じぐらいだなと思い、安心しました。また参加したみなさんも講師に対する質問の内容を聞いて、勉強されているな、と思いました。