こんにちは。ココナラでインフラを担当しているひろたです。
今回は、SSLについてのお話です。 最近Google Chrome(Chrome 69から)では、常時SSLに対応していないサイトは警告が出る様になりましたね。
こんな風に
つまり今後HTTPでの通信ですら赤文字で「保護されていません」なんて表示されちゃうわけです。 当然いまどきどこのサイトも当たり前の様にHTTPS化されていると思います。
・・・自分のサーバはどうだっけ・・
私もインフラエンジニアのはしくれ、個人でサーバーの一つや二つは持っている。 当然SSL証明書も実装してあったはず、と思いチェックしたところ気持ちいいくらい全力でHTTPS未実装だったので 急いで対応しました。
てなわけでLet's EncryptでワイルドカードSSL証明書の発行を自分のドメイン向けに作成してみようと思います。
certbotを使って作ってみました。
作業環境はこんなかんじ。
- Ubuntu 16.04
- certbot 0.26.1
リポジトリ追加
まずはcertbotをインストールするためにppaからリポジトリを追加する。
# add-apt-repository ppa:certbot/certbot
certbotをインストール
# apt install certbot
# certbot --version certbot 0.26.1 ※ certbotのバージョンは0.22以降が必要です。
証明書を取得
certbotコマンドはこんな感じです。
ポイントは--preferred-challengesオプションで認証方法をDNSにすることと、
今回はワイルドカード証明書を作成するのでACMEv2が利用できるサーバを指定すること。
# certbot certonly --manual -d *.example.com \ --agree-tos \ --no-bootstrap \ --manual-public-ip-logging-ok \ --preferred-challenges dns-01 \ --server https://acme-v02.api.letsencrypt.org/directory
実行するとこんな感じでTXTレコードを追加しろと出てくるので、設定してあげましょう
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name _acme-challenge.example.com with the following value: dI_dJ7s8Jm_reYLVhcPFnFLLiKGgruQerjB5W9Cj0sU Before continuing, verify the record is deployed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continue
最後にEnterを押す。これだけ、ね簡単でしょう?
こんなかんじで証明書のシンボリックリンクを設置されてるので、Webサーバに設定してあげるだけ
証明書: /etc/letsencrypt/live/example.com/cert.pem 中間証明書: /etc/letsencrypt/live/example.com/chain.pem 証明書と中間証明書の連結ファイル: /etc/letsencrypt/live/example.com/fullchain.pem 秘密鍵: /etc/letsencrypt/live/example.com/privkey.pem
nginxに設定して動作確認
こんな感じでワイルドカード証明書もお手軽に作成できました。
個人のテスト環境等で大活躍。 これでサブドメインを気にせず証明書が使えますね!
お知らせメール登録
よもやまブログの更新時にメールでお知らせします。