この記事は ICS Advent Calendar 2018 の11日目の記事です。
昨日は大木くん(@2357gi)が Slackを研究室のラボメンに布教した話 を書いてくれました。
ちなみにうちの研究室はSlackより先にLINEのグループができてしまいました
情報通信システム工学科の わくわく(@waku_25) です。苗字は一瞬で一族特定されるので勘弁…
さて、主要なブラウザが、SSL/TLS通信ではない場合にとか出るようになりました。
「まじか〜〜」or「やっとか〜〜」ってなったと思います。なってない人はなってください。
というわけで、通信のSSL/TLS化した時の手順について、書き残しておきます。
#環境
- さくらのVPS
- CentOS Linux release 7.4.1708
- Apache 2.4.6
- mod_ssl インストール済み
- epel-release 追加済み
#HTTPS化しよう
「企業ならともかく、ログインとかする事ないサイトなんだが証明書入れる必要あるの?」って思ったそこのあなた!!!簡単だし無料だからやろう?
証明書がなんなのかわからない人はここを読んでください。
IT初心者用入門 「証明書とは?」|Cybertrust.ne.jp
##CertBotのインストールと実行
VPSにいつも通りログインします。
まず、以下をhttpd.confに書き加えます。
僕は 大木君のようにVim使いではないので エディタの指定はしませんし、宗教戦争にも参加しません。
<VirtualHost *:80>
ServerAdmin <メールアドレス>
DocumentRoot /var/www/html #自分の環境によって変えてください
ServerName <ドメイン名>
</VirtualHost>
そしてLet's Encryptのツールcertbotをインストールします。
対話型のインストーラなので指示に従います。
yum install certbot python-certbot-apache
certbot run --apache -d <ドメイン名>
/etc/letsencrypt/live/<ドメイン名>
に証明書が作成され、
/etc/httpd/conf.d/ssl.conf
が書き換えられ、暗号化されたかと思います。
###できてないが?
もし自前の証明書使ってるやで!安全じゃないやで!って警告が出てたらconfigファイルを書き換えます。
僕は警告出ましたなんでや
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
# ↓ 変更後 ↓ #
SSLCertificateFile /etc/letsencrypt/live/<ドメイン名>/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<ドメイン名>/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/<ドメイン名>/chain.pem
/etc/httpd/conf/httpd.conf
にも同じ項目があったらコメントアウトして、
最後にInclude /etc/httpd/conf/httpd-le-ssl.conf
と書き込めばOKなはずです。
--apache
のオプションを使うと、/etc/httpd/conf/httpd-le-ssl.conf
ができます。
そこで443ポートの設定とLet's Encryptの証明書を読み込んでいるはずなので、includeすれば大丈夫です。
###できた
できました。
企業名の表示だったり、バーを緑色にしたりは、EV(Extended Validation)を使えばできますが企業じゃないとできません。
企業名の表示はされないけど、企業が実在していることを証明した証明書(OV: Organization Validation)というのもあります。
個人サイトではドメイン認証型証明書(DV: Domain Validation)が限界です。
詳しくはここを見てください。
SSLサーバ証明書の種類と比較 | DigiCert & Symantec
##cronで自動更新
今回の証明書は90日で期限が切れます。短い気もしますが無料なのでしょうがないですね。
僕は忘れっぽいので、証明書を切らしてしまう未来が見えます。
なので、自動的に更新してくれるようにします。
crontab -e
Certbotにもタイマー機能があるらしいんですが、イマイチわからなかったのでCronを使いました。
cronについては 初心者向けcronの使い方 がわかりやすくていいかと思います。
0 0 * * sun root certbot renew #毎週日曜0:00に更新する
1ヶ月前から更新が可能なので、もし失敗してもまだ3回くらいはチャンスがあるので大丈夫でしょう。
毎日やる必要もないかなーと。
#参考資料
CentOS 7(さくらVPS) + ApacheにLet's Encryptの無料SSL導入 - Qiita
常時SSL化待ったなし!CentOS 7 と Apacheに Let’s Encryptで信頼性の高いHTTPSを設定する
ネコでもわかる!さくらのVPS講座 ~第六回「無料SSL証明書 Let’s Encryptを導入しよう」 | さくらのナレッジ
#最後に
もう少し書きたいことはあったんですが、長くなりそうなのでまた次に書くことにします。
僕はまだ触り始めて1ヶ月とかなので、もし変なところがあればコメントください。
明日は ICS Advent Calendar 2018 12日目です。@ksg61が書いてくれるそうです。何を書いてくれるんでしょうね。