Acmesmith で証明書発行を試す – その2

前回「Acmesmith で証明書発行を試す - その1」で で filesystem に保存する方法を試してみました。

今回は AWS S3 に保存するテストを行ってみます。KMS はまだ使いません。bucket 名は BUCKET-NAME として進めます。

aws s3 コマンドでも操作できるように IAM policy を設定します。README に書いてある policy には s3:GetBucketLocation がないために aws s3 コマンドではアクセスできませんでした。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::BUCKET-NAME"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::BUCKET-NAME/*"
    }
  ]
}

acmesmith.sh の storage を S3 用に書き換えます。
認証情報は aws-cli の ~/.aws/credentials を使うのでここには書きません。region~/.aws/config の値は使われないので指定が必要です。

endpoint: https://acme-v01.api.letsencrypt.org/

storage:
  type: s3
  bucket: BUCKET-NAME
  region: ap-northeast-1
  use_kms: false

challenge_responders:
  - route53: {}

account_key_passphrase:
certificate_key_passphrase:

前回作成したアカウントの account.pem が手元にあるのでこれを S3 にコピーしておきます。(新たに作成 (register) しても問題ありません)

$ aws s3 cp account.pem s3://BUCKET-NAME/account.pem
$ aws s3 ls s3://BUCKET-NAME/
2016-02-07 17:28:05       1679 account.pem

後は同じですね。

$ bundle exec acmesmith authorize www2.teraoka.me
$ bundle exec acmesmith request www2.teraoka.me
$ aws s3 ls s3://BUCKET-NAME/
                           PRE certs/
2016-02-07 17:28:05       1679 account.pem
$ aws s3 ls s3://BUCKET-NAME/certs/
                           PRE www2.teraoka.me/
$ aws s3 ls s3://BUCKET-NAME/certs/www2.teraoka.me/
                           PRE 20160207-032600_***********************************/
2016-02-07 13:25:50         51 current
$ aws s3 ls s3://BUCKET-NAME/certs/www2.teraoka.me/20160207-032600_***********************************/
2016-02-07 13:25:49       1797 cert.pem
2016-02-07 13:25:50       1675 chain.pem
2016-02-07 13:25:50       3472 fullchain.pem
2016-02-07 13:25:50       1679 key.pem

次回は KMS (Key Management Service)試します

Acmesmith で証明書発行を試す – その1

無料でSSL証明書の発行ができる Let's Encrypt が Public Beta となり、これからどんどん利用されていくと思われますが、公式(?)のツール https://github.com/letsencrypt/letsencrypt はちょっと使いにくいところがありました。

DigitalOcean にも解説記事 How To Secure Nginx with Let's Encrypt on CentOS 7 がありましたが、あのツールでは HTTP でのドメイン認証となり、証明書を取得しようとしているドメイン(FQDN)が外部 (Let's Encrypt 側のサーバー) からアクセス可能状態でなければなりません。
外部に公開していない、できないサーバーであったり、ロードバランサーの背後にあったり、Web じゃなくてメールサーバーとか LDAP サーバーで使いたいのにという場合に不便でした。

そんななか sorah さんが Acmesmith という便利ツールを公開されていたので早速試してみることにしました。 "Acmesmith で証明書発行を試す – その1"の続きを読む

AWS Route53 の管理に Roadworker を試した

DNS を AWS Route53 で管理するにあたり、ブラウザでポチポチやるのはやっぱり誤操作が怖いし、履歴の管理ができないよなぁということで Roadworker を試してみました。

インストール

インストールは gem install だけ

$ gem install roadworker --no-ri --no-rdoc

Bundler を使う場合は

$ cat < <_EOD_ > Gemfile
source 'https://rubygems.org'
gem 'roadworker'
_EOD_
$ bundle install --path bundle
$ bundle exec roadwork

な感じで。

次に Route53 の Action を許可した IAM ユーザーを用意し、環境変数 (AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID) をセットします。

"AWS Route53 の管理に Roadworker を試した"の続きを読む

Route 53 を使ってみた

【試してみた】Amazon Route 53にドメインを移動してみた。 | Pocketstudio.jp log3 を見て、お、私も試してみようと。

簡単すぎて上記のブログ以上に書くことがない...

個人のドメインはお名前.comのサービス使ってたし、めったにいじることもないから運用面で特に変わるところはないんだけど、費用がどの程度かかるのかは様子見かな。

さて、お仕事のドメインを Route 53 に移すかどうかだな。
BIND とかの運用なくせるなら良いけど内部用 DNS サーバーは必要だし、AWS のサービスとて 100% 信頼できるわけじゃないからなぁ。

でもこれらが全部落ちることはないから大丈夫か。

  • ns-1464.awsdns-55.org.
  • ns-1541.awsdns-00.co.uk.
  • ns-315.awsdns-39.com.
  • ns-754.awsdns-30.net.

ついでに AWS 用アカウントを Google Authenticator で2要素認証にしてみた。