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)試します