1と2のリビジョン間の差分
2016-05-29 17:31:10時点のリビジョン1
サイズ: 3876
コメント:
2016-05-29 20:34:00時点のリビジョン2
サイズ: 5993
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 32: 行 32:
 * その代わり、シンボリックリンクで誘導することは可能。
行 47: 行 48:
}}}
 * 例えば Apache では以下のように指定することになる。
{{{
  SSLCertificateFile /usr/local/etc/letsencrypt.sh/certs/コモンネーム/fullchain.pem
  SSLCertificateKeyFile /usr/local/etc/letsencrypt.sh/certs/コモンネーム/privkey.pem
}}}

== ドメイン所有者確認トークンディレクトリの指定 ==
 * ドメイン所有者確認トークンの設置場所(ディレクトリ)を決める。
 * これはWebサーバー側の設定とも連動する話なので、その前提で決定する。
 * 以下はアクセスログ(例)である。
{{{
66.133.109.36 - - [29/May/2016:06:02:21 +0900] "GET /.well-known/acme-challenge/チャレンジトークン HTTP/1.1" 200 87 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"
}}}
 * デフォルトで /usr/local/etc/letsencrypt.sh/.acme-challenges となっている。
 * 「WELLKNOWN」変数で指定が可能となる。
 * 例えば、本手順の参考にしたサイト(後述の参考文献参照)では、以下のディレクトリに設定している。
{{{#format sh
mkdir -p /usr/local/apache/www/.well-known/acme-challenge
行 49: 行 69:
 * この時、Apache(2.4)の設定は以下の通りである。
{{{
Alias /.well-known/ /usr/local/www/.well-known/
<Directory "/usr/local/www/.well-known/">
   Options None
   AllowOverride None
   Require all granted
   Header add Content-Type text/plain
</Directory>
}}}

== アカウントキーの保存ディレクトリの指定 ==
 * アカウントキーと呼ばれるJSONとRSA秘密鍵の保存ディレクトリを指定する。
 * 特に前者は /usr/local/etc/letsencrypt/accounts/acme-v01.api.letsencrypt.org/directory/アカウント/private_key.json と同じものである。
 * デフォルトで /usr/local/etc/letsencrypt.sh/private_key.{json,pem} となる。
 * これら設定は「ACCOUNT_KEY_JSON」と「ACCOUNT_KEY」設定で指定が可能である。

Let's Encrypt

  • Lets' EncryptによるSSL証明書の自動取得・自動更新に関するメモを残す。

  • Let's Encrypt 自体、まだまだ未完成のところがあるので、今後の改善によっては本記述が間に合わないことがある。
  • その場合は本家のドキュメントを確認して欲しい。
  • 例えば、letsencrypt コマンドは今では certbot コマンドに変わっている。
  • しかし FreeBSD では2016年05月29日現在、従来通り、letsencrypt コマンドのまま維持されているため、その前提で話を進める。
  • また運用環境が極端に違うことから、FreeBSD 環境での解説のみとし、CentOS 環境での解説は行わない。
  • 将来もう少し、環境差違が無くなってから解説するつもりある。
  • 現時点では初期運用については差違が無いが、自動運転するにはやることが多すぎるためである。

インストール

  • ports ないしは packages から、以下の ports をインストールする。
  • 一般的には ports/security/letsencrypt.sh よりも ports/security/py-letsencrypt を使う事例の方が多いが、今回は使わない。

  • この事情は ports メンテナの功績によるものなので:-)、他の環境でそうであるかは不明である。

準備

  • いくつかのディレクトリの作成および設置ルールを決める。
  • これは本家(ports/security/py-letsencrypt)の作法とは相違があるためである。

証明書の設置場所

  • ports/security/letsencrypt.sh では /usr/local/etc/letsencrypt.sh/certs/コモンネーム/ 以下のファイルが設置される。
    • /usr/local/etc/letsencrypt.sh/certs/コモンネーム/cert-エポックタイム.csr
    • /usr/local/etc/letsencrypt.sh/certs/コモンネーム/cert-エポックタイム.pem
    • /usr/local/etc/letsencrypt.sh/certs/コモンネーム/chain-エポックタイム.pem
    • /usr/local/etc/letsencrypt.sh/certs/コモンネーム/fullchain-エポックタイム.pem
    • /usr/local/etc/letsencrypt.sh/certs/コモンネーム/privkey-エポックタイム.pem
  • これは本家の /usr/local/etc/letsencrypt/archive/コモンネーム/ に相当するディレクトリとなる。
  • 設置場所についてはプログラム中に直接記載されているため、変更は不可能である。
  • その代わり、シンボリックリンクで誘導することは可能。
  • また、本家の /usr/local/etc/letsencrypt/live/コモンネーム/ に相当するディレクトリは無く、上記ディレクトリにて、直接、最新の証明書に対してシンボリックリンクが張られる。

# cd /usr/local/etc/letsencrypt.sh/certs/コモンネーム
# ls -alF
total 122
-rw-------  1 root  wheel   436 May 29 06:02 cert-1464469337.csr
-rw-------  1 root  wheel  1533 May 29 06:02 cert-1464469337.pem
lrwx------  1 root  wheel    19 May 29 06:02 cert.csr@ -> cert-1464469337.csr
lrwx------  1 root  wheel    19 May 29 06:02 cert.pem@ -> cert-1464469337.pem
-rw-------  1 root  wheel  1647 May 29 06:02 chain-1464469337.pem
lrwx------  1 root  wheel    20 May 29 06:02 chain.pem@ -> chain-1464469337.pem
-rw-------  1 root  wheel  3180 May 29 06:02 fullchain-1464469337.pem
lrwx------  1 root  wheel    24 May 29 06:02 fullchain.pem@ -> fullchain-1464469337.pem
-rw-------  1 root  wheel   302 May 29 06:02 privkey-1464469337.pem
lrwx------  1 root  wheel    22 May 29 06:02 privkey.pem@ -> privkey-1464469337.pem
  • 例えば Apache では以下のように指定することになる。

  SSLCertificateFile    /usr/local/etc/letsencrypt.sh/certs/コモンネーム/fullchain.pem
  SSLCertificateKeyFile /usr/local/etc/letsencrypt.sh/certs/コモンネーム/privkey.pem

ドメイン所有者確認トークンディレクトリの指定

  • ドメイン所有者確認トークンの設置場所(ディレクトリ)を決める。
  • これはWebサーバー側の設定とも連動する話なので、その前提で決定する。
  • 以下はアクセスログ(例)である。

66.133.109.36 - - [29/May/2016:06:02:21 +0900] "GET /.well-known/acme-challenge/チャレンジトークン HTTP/1.1" 200 87 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"
  • デフォルトで /usr/local/etc/letsencrypt.sh/.acme-challenges となっている。
  • 「WELLKNOWN」変数で指定が可能となる。
  • 例えば、本手順の参考にしたサイト(後述の参考文献参照)では、以下のディレクトリに設定している。

{{{#format sh mkdir -p /usr/local/apache/www/.well-known/acme-challenge

}}}

  • この時、Apache(2.4)の設定は以下の通りである。

Alias /.well-known/ /usr/local/www/.well-known/
<Directory "/usr/local/www/.well-known/">
   Options None
   AllowOverride None
   Require all granted
   Header add Content-Type text/plain
</Directory>

アカウントキーの保存ディレクトリの指定

  • アカウントキーと呼ばれるJSONとRSA秘密鍵の保存ディレクトリを指定する。
  • 特に前者は /usr/local/etc/letsencrypt/accounts/acme-v01.api.letsencrypt.org/directory/アカウント/private_key.json と同じものである。
  • デフォルトで /usr/local/etc/letsencrypt.sh/private_key.{json,pem} となる。
  • これら設定は「ACCOUNT_KEY_JSON」と「ACCOUNT_KEY」設定で指定が可能である。

参考文献

certificate/レッツエンクリプトでSSL証明書の新規取得と自動更新(http-01編) (最終更新日時 2019-05-08 17:20:04 更新者 NorikatsuShigemura)