LoginSignup
0
0

More than 5 years have passed since last update.

PHPer が acmesmith を使ってサーバー証明書を取得する際にハマったこと

Posted at

Let's Encrypt でサーバー証明書を取得するために、
https://github.com/sorah/acmesmith を使わせて頂きました。
ありがとうございました。

また、作業をするにあたって
https://blog.1q77.com/2016/02/acmesmith-1/
を参考にさせて頂きました。

ありがとうございました。

基本的に、上記ブログ及び README を見ると、
使用できました。

しかし、いくつかハマリポイントがあったので、
全体の流れを書きつつまとめていきます。

前提条件

https://github.com/sorah/acmesmith/blob/master/README.md#3rd-party-plugins
でも言及されていますが、AWS の Route53 を使用していることが前提になっています。

Google Cloud DNS 等をお使いの方は、適宜 サードパーティープラグインを使用する必要があります。

今回は、Route53を使う想定で書いていきます。

使用した環境

CentOS7のdockerコンテナ上で作業を行いました。
/etc/hoge というディレクトリを HOST OS上で作成し、 docker にマウントしました。
これにより、生成した証明書はHOST OS から参照できます。

バージョン情報は、それぞれ下記の通りです。
rbenv 1.1.0-2-g4f8925a
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]
Bundler version 1.14.5

また、サーバー証明書をS3 にあげることもできるらしいですが、
簡単のため、今回はサーバー証明書をローカルに置くことにしました。

なお、ruby環境を構築するにあたっては、
http://qiita.com/Fendo181/items/d14ebfb148223c8e5ecb
を参考にさせていただきました。

やったこと

1. Gemfile の生成

任意のディレクトリで、
bundle init
というコマンドを実行し、Gemfile というファイルを生成しました。

2. Gemfile の編集

できたGemfile の中は、

# frozen_string_literal: true
source "https://rubygems.org"

# gem "rails"

と書かれていました。

これに、
gem 'acmesmith' を追記し、

# frozen_string_literal: true
source "https://rubygems.org"
gem 'acmesmith'
# gem "rails"

としました。

その後、

bundle install --path vendor/bundle

を実行しました。

3. IAM の取得

Route53 にアクセスするために、 IAM の設定を行う必要があります。
今回は新しいユーザーを作成し、IAM の設定を行いました。
なお、権限は、 AmazonRoute53FullAccess が必要でした。

4. acmesmith.yml の作成

acmesmith.ymlというファイルを作成する必要がありました。
その中に、

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

storage:
  type: filesystem
  path: /etc/hoge # <- ファイルを置くパス

challenge_responders:
  - route53:
      aws_access_key:
        access_key_id: アクセスキー # <- 前述のIAM を作成した時にもらえるのaccess_key_idを置く
        secret_access_key: 秘密キー # <- 前述のIAM を作成した時にもらえるsecret_access_keyを置く
        session_token:      # 空のままにした
      hosted_zone_map:
        "ドメイン名": "AWS Route 53 の Hosted Zone ID" # ダブルクォーテーションをつけて書く

account_key_passphrase: # 空のままにした
certificate_key_passphrase: # 空のままにした

を記載しました。

この設定を間違えてて結構はまりました。。。

5. .pem ファイルの作成

bundle exec acmesmith register mailto:xxx@example.org

を実行すると、
/etc/hogeaccount.pemファイルが作成されました。

ちなみに、ここではmailto をつけるのを忘れてハマりました。。

6. 証明書を発行

ここまでの設定が全てうまくいっていたら、
bundle exec acmesmith authorize ドメイン名 というコマンドを打つことにより、ドメイン認証が行われます。
結果の画像を撮り忘れたので、
上述の https://blog.1q77.com/2016/02/acmesmith-1/ を見ていただけると良いと思います。

7. 証明書を保存

ここまですべてうまく行ったら、
bundle exec acmesmith request 上と一緒のドメイン名 と打つことにより、
/etc/hoge に証明書が保存されます。

8. 以上

以上で完了です。
ruby を使ったことがない初心者でも、2時間ぐらいで(かかりすぎw)人の手を借りつつ証明書を取得できました!
この記事読めば、30分ぐらいでできるようになるはずです。

ちなみに、Let's Encrypt の証明書は90日で期限が切れるそうですが、
自動で更新する方法もあるようです。

僕はまだ設定していませんが、
調べてみるといいと思います。

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