LoginSignup
2

More than 5 years have passed since last update.

Let's EncryptでSSL/TLS化 【Cent OS 7】

Last updated at Posted at 2018-12-10

この記事は ICS Advent Calendar 2018 の11日目の記事です。
昨日は大木くん(@2357gi)が Slackを研究室のラボメンに布教した話 を書いてくれました。
ちなみにうちの研究室はSlackより先にLINEのグループができてしまいました:poop:
情報通信システム工学科の わくわく(@waku_25) です。苗字は一瞬で一族特定されるので勘弁…

さて、主要なブラウザが、SSL/TLS通信ではない場合にスクリーンショット 2018-12-07 11.36.58.pngとか出るようになりました。
「まじか〜〜」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使いではないので エディタの指定はしませんし、宗教戦争にも参加しません。

/etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    ServerAdmin <メールアドレス>
    DocumentRoot /var/www/html #自分の環境によって変えてください
    ServerName <ドメイン名>
</VirtualHost>

そしてLet's Encryptのツールcertbotをインストールします。
対話型のインストーラなので指示に従います。

tarminal
yum install certbot python-certbot-apache
certbot run --apache -d <ドメイン名>

/etc/letsencrypt/live/<ドメイン名>に証明書が作成され、
/etc/httpd/conf.d/ssl.confが書き換えられ、暗号化されたかと思います。

できてないが?

もし自前の証明書使ってるやで!安全じゃないやで!って警告が出てたらconfigファイルを書き換えます。
僕は警告出ました:angry::angry::angry::angry:なんでや:angry::angry::angry::angry:

/etc/httpd/conf.d/ssl.conf
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すれば大丈夫です。

できた

できました。スクリーンショット 2018-12-07 9.57.25.png
企業名の表示だったり、バーを緑色にしたりは、EV(Extended Validation)を使えばできますが企業じゃないとできません。
企業名の表示はされないけど、企業が実在していることを証明した証明書(OV: Organization Validation)というのもあります。
個人サイトではドメイン認証型証明書(DV: Domain Validation)が限界です。
詳しくはここを見てください。
SSLサーバ証明書の種類と比較 | DigiCert & Symantec

cronで自動更新

今回の証明書は90日で期限が切れます。短い気もしますが無料なのでしょうがないですね。
僕は忘れっぽいので、証明書を切らしてしまう未来が見えます。
なので、自動的に更新してくれるようにします。

tarminal
crontab -e

Certbotにもタイマー機能があるらしいんですが、イマイチわからなかったのでCronを使いました。
cronについては 初心者向けcronの使い方 がわかりやすくていいかと思います。

/etc/crontab
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を導入しよう」 | さくらのナレッジ

おまけ
SSL/TLS未対応のサイト - 阿部寛のHP

最後に

もう少し書きたいことはあったんですが、長くなりそうなのでまた次に書くことにします。
僕はまだ触り始めて1ヶ月とかなので、もし変なところがあればコメントください。
明日は ICS Advent Calendar 2018 12日目です。@ksg61が書いてくれるそうです。何を書いてくれるんでしょうね。

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