LoginSignup
0
0

More than 3 years have passed since last update.

Amazon Linux2でLet's EncryptするのをItamae化

Posted at

はじめに

RailsアプリケーションのサーバーをItamaeで管理しているます。
環境構築時にELBを立てず、サーバー直接でアクセスさせる場合、サーバーへのSSL証明書の設定が必要になります。
サーバーはAmazon Linux2で、SSL証明書はLet's Encriptで取得するのをItamae化してみました。

nginx, Itamae, Certbotのインストール、構築は既に済んでいるものとします。

環境

  • サーバー
    EC2

  • OS
    Amazon Linux2

  • バージョン
    Rails: 5.x.x(複数プロジェクト)
    Ruby: 2.x.x

手動構築手順

参照:
https://qiita.com/MysteriousMonkey/items/4d3d857c0e68d4bfff39[https://qiita.com/MysteriousMonkey/items/4d3d857c0e68d4bfff39]

簡単に説明すると、下記コマンドを打つ

$ sudo certbot --nginx

すると、対話式でメールアドレス、対象ドメイン、規約への同意などなどの確認があったのち、SSL証明書が作成され、nginx.confに自動的に設定される.

その対話をコマンドオプション指定でなくすことができるかどうかが今回の争点!

結論

  • cookbooks/certbot/default.rb

execute 'download EPEL7' do
  user 'root'
  command "wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/"
end

execute 'install EPEL7' do
  user 'root'
  command "rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm"
end

execute 'enable EPEL7' do
  user 'root'
  command 'yum-config-manager --enable epel*'
end

package 'certbot'
package 'python2-certbot-nginx'


execute 'SSL証明書を作成' do
  user 'root'
  command "certbot --nginx -d #{node[:dns][:server_name]} --agree-tos --register-unsafely-without-email -n"
end

やったこと

  • Amazon Linux 2 でEPEL7を使用可能にする。
  • certbotとpython2-certbot-nginxをインストール
  • 証明書の作成
    • オプション
      • -d example.com # => DNSを指定。nginx.confのserver_nameと同じにする
      • --agree-tos # => 規約に同意
      • --register-unsafely-without-email # => メールを登録しない(非推奨)
      • -n #=> 対話をなくす

certbot自体のオプションはそのまま流用可能なようなので、registerする場合は

--email test@example.com

などの指定も可能。

これでめっちゃ手軽にLet's Encript生活!!

事後作業

証明書更新のCronの設定は適宜参照してください。===>> 上記URL

参考にさせていただいたサイト

0
0
0

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
0
0