「Certbot」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) 細 (日本のwikipediaへのリンクに修正) |
(翻訳) |
||
2行目: | 2行目: | ||
[[Category:セキュリティ]] |
[[Category:セキュリティ]] |
||
[[en:Let’s Encrypt]] |
[[en:Let’s Encrypt]] |
||
− | [https://letsencrypt.org/ Let’s Encrypt] は[[Wikipedia:ja:Automated Certificate Management Environment|ACME]] プロトコルを利用し |
+ | [https://letsencrypt.org/ Let’s Encrypt] はフリーかつ自動化されたオープンな認証局です。[[Wikipedia:ja:Automated Certificate Management Environment|ACME]] プロトコルを利用しています。 |
− | 公式クライアントは '''Certbot''' と |
+ | 公式クライアントは '''Certbot''' という名前で、コマンドラインから有効な SSL 証明書を取得できます。また、手動で CSR 作成を行うミニマルなクライアントを {{AUR|acme-tiny}} でインストールすることができます。スクリプトで使用するのに適したクライアントとして {{AUR|simp_le-git}} や {{AUR|letsencrypt-cli}} も存在します。 |
− | {{Note|以前 ''Let’s Encrypt |
+ | {{Note|以前 ''Let’s Encrypt クライアント''と呼ばれていた公式クライアントは、現在 ''Certbot'' と呼ばれています。}} |
== Certbot == |
== Certbot == |
||
37行目: | 37行目: | ||
==== Webroot ==== |
==== Webroot ==== |
||
− | webroot |
+ | webroot の方法では、{{ic|yourdomain.tld/.well-known/acme-challenge/}} でチャレンジ/レスポンス認証が行われます。ウェブサーバー (例: Apache/nginx) を止めることなく証明書を取得・更新できます: |
# certbot certonly --email ''email@example.com'' --webroot -w ''/path/to/html/'' -d ''your.domain'' |
# certbot certonly --email ''email@example.com'' --webroot -w ''/path/to/html/'' -d ''your.domain'' |
||
43行目: | 43行目: | ||
サーバーの設定で {{ic|/etc/letsencrypt/live/''your.domain''/}} の証明書を使うようにしてください。 |
サーバーの設定で {{ic|/etc/letsencrypt/live/''your.domain''/}} の証明書を使うようにしてください。 |
||
− | ===== |
+ | ===== マルチドメイン ===== |
+ | 複数のドメインあるいはサブドメインを使用する場合、全てのドメインに対して webroot を指定する必要があります。別の webroot を指定しないと、既存の webroot が使われます。 |
||
− | If you use more than one domain or subdomains, the webroot has to be given for every domain. If no new webroot is given, the previous is taken. |
||
+ | {{ic|/.well-known/acme-challenge/}} への http リクエストを全て一つのフォルダ (例: {{ic|/var/lib/letsencrypt}}) にまとめることで、マルチドメインの管理がとても楽になります。nginx ならば、証明書を作成したいサイトの server ブロックの中に以下の location ブロックを記述します: |
||
− | Management of this can be made much easier, if you map all http requests for {{ic|/.well-known/acme-challenge/}} to a single folder, e.g. {{ic|/var/lib/letsencrypt}}. |
||
− | For nginx you can achieve this by placing this location block within server blocks of sites you want to request certificates for: |
||
{{bc|<nowiki> |
{{bc|<nowiki> |
||
location /.well-known/acme-challenge { |
location /.well-known/acme-challenge { |
||
56行目: | 55行目: | ||
} |
} |
||
</nowiki>}} |
</nowiki>}} |
||
− | + | Apache の場合、{{ic|httpd-acme.conf}} ファイルを作成してください: |
|
{{hc|/etc/httpd/conf/extra/httpd-acme.conf|<nowiki> |
{{hc|/etc/httpd/conf/extra/httpd-acme.conf|<nowiki> |
||
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" |
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" |
||
65行目: | 64行目: | ||
</Directory> |
</Directory> |
||
</nowiki>}} |
</nowiki>}} |
||
− | + | そして {{ic|httpd.conf}} で上記ファイルをインクルードします: |
|
{{hc|/etc/httpd/conf/httpd.conf|<nowiki> |
{{hc|/etc/httpd/conf/httpd.conf|<nowiki> |
||
Include conf/extra/httpd-acme.conf |
Include conf/extra/httpd-acme.conf |
||
</nowiki>}} |
</nowiki>}} |
||
− | + | letsencrypt クライアントのパスから設定したパスに書き込めるように、また、ウェブサーバーから読み込めるようにする必要があります。次のコマンドを実行してください: {{ic|# chgrp http /var/lib/letsencrypt && chmod g+s /var/lib/letsencrypt}}。 |
|
===== 自動更新 ===== |
===== 自動更新 ===== |
||
87行目: | 86行目: | ||
[[systemd/タイマー|タイマー]]を追加する前に、サービスが正しく動作すること、何も入力が要求されないことを確認してください。 |
[[systemd/タイマー|タイマー]]を追加する前に、サービスが正しく動作すること、何も入力が要求されないことを確認してください。 |
||
− | それから、タイマーを追加することで |
+ | それから、タイマーを追加することで証明書を更新できます (更新の必要がない証明書は自動的にスキップされます)。 |
{{hc|1=/etc/systemd/system/certbot.timer| |
{{hc|1=/etc/systemd/system/certbot.timer| |
||
2=[Unit] |
2=[Unit] |
||
− | Description= |
+ | Description=Daily renewal of Let's Encrypt's certificates |
[Timer] |
[Timer] |
||
− | OnCalendar= |
+ | OnCalendar=daily |
Persistent=true |
Persistent=true |
||
100行目: | 99行目: | ||
WantedBy=timers.target}} |
WantedBy=timers.target}} |
||
− | {{ic|certbot.timer}} を[[起動]]・[[有効化 |
+ | {{ic|certbot.timer}} を[[起動]]・[[有効化]]してください。 |
証明書を更新するたびにウェブサーバーを再起動させることもできます。{{ic|certbot.service}} ファイルに以下のどちらかの行を追加してください: |
証明書を更新するたびにウェブサーバーを再起動させることもできます。{{ic|certbot.service}} ファイルに以下のどちらかの行を追加してください: |
||
− | * Apache: {{ic|1=ExecStartPost=/ |
+ | * Apache: {{ic|1=ExecStartPost=/bin/systemctl reload httpd.service}} |
− | * nginx: {{ic|1=ExecStartPost=/ |
+ | * nginx: {{ic|1=ExecStartPost=/bin/systemctl reload nginx.service}} |
== 参照 == |
== 参照 == |
2016年6月16日 (木) 23:21時点における版
Let’s Encrypt はフリーかつ自動化されたオープンな認証局です。ACME プロトコルを利用しています。
公式クライアントは Certbot という名前で、コマンドラインから有効な SSL 証明書を取得できます。また、手動で CSR 作成を行うミニマルなクライアントを acme-tinyAUR でインストールすることができます。スクリプトで使用するのに適したクライアントとして simp_le-gitAUR や letsencrypt-cliAUR も存在します。
Certbot
Certbot は公式のリファレンスクライアントです。Python で書かれており、証明書を取得するためのコマンドラインツールを提供します。
インストール
公式クライアントを用いて発行された証明書はプラグインを使ってウェブサーバーに自動的に設定・インストールできます:
- Nginx 用の実験的なプラグインは certbot-nginx パッケージに入っています。
- certbot-apache パッケージも存在していますが、Apache HTTP Server を使っている場合の自動インストールは現在 Debian の派生ディストリビューションでしかサポートされていません。
設定
証明を作成・インストールする方法は Certbot のドキュメント を参照してください。
手動
ウェブサーバーのプラグインが存在しない場合、次のコマンドを使って下さい:
# certbot certonly --manual
上記のコマンドで自動的にドメインが認証されて秘密鍵と証明書のペアが作成されます。秘密鍵と証明書は /etc/letsencrypt/live/your.domain/
に保存されます。
上記のディレクトリに入っている秘密鍵と証明書を使用するように手動でウェブサーバーを設定します。
Webroot
webroot の方法では、yourdomain.tld/.well-known/acme-challenge/
でチャレンジ/レスポンス認証が行われます。ウェブサーバー (例: Apache/nginx) を止めることなく証明書を取得・更新できます:
# certbot certonly --email email@example.com --webroot -w /path/to/html/ -d your.domain
サーバーの設定で /etc/letsencrypt/live/your.domain/
の証明書を使うようにしてください。
マルチドメイン
複数のドメインあるいはサブドメインを使用する場合、全てのドメインに対して webroot を指定する必要があります。別の webroot を指定しないと、既存の webroot が使われます。
/.well-known/acme-challenge/
への http リクエストを全て一つのフォルダ (例: /var/lib/letsencrypt
) にまとめることで、マルチドメインの管理がとても楽になります。nginx ならば、証明書を作成したいサイトの server ブロックの中に以下の location ブロックを記述します:
location /.well-known/acme-challenge { root /var/lib/letsencrypt; default_type "text/plain"; try_files $uri =404; }
Apache の場合、httpd-acme.conf
ファイルを作成してください:
/etc/httpd/conf/extra/httpd-acme.conf
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" <Directory "/var/lib/letsencrypt/"> AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS </Directory>
そして httpd.conf
で上記ファイルをインクルードします:
/etc/httpd/conf/httpd.conf
Include conf/extra/httpd-acme.conf
letsencrypt クライアントのパスから設定したパスに書き込めるように、また、ウェブサーバーから読み込めるようにする必要があります。次のコマンドを実行してください: # chgrp http /var/lib/letsencrypt && chmod g+s /var/lib/letsencrypt
。
自動更新
certbot certonly
を実行するとき、Certbot はドメインと webroot ディレクトリを /etc/letsencrypt/renewal
に記録します。次回からは certbot renew
を実行することで証明書を自動更新することができます。
以下の .service
ファイルを作成することで完全に自動化することが可能です:
/etc/systemd/system/certbot.service
[Unit] Description=Let's Encrypt renewal [Service] Type=oneshot ExecStart=/usr/bin/certbot renew
タイマーを追加する前に、サービスが正しく動作すること、何も入力が要求されないことを確認してください。
それから、タイマーを追加することで証明書を更新できます (更新の必要がない証明書は自動的にスキップされます)。
/etc/systemd/system/certbot.timer
[Unit] Description=Daily renewal of Let's Encrypt's certificates [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.target
証明書を更新するたびにウェブサーバーを再起動させることもできます。certbot.service
ファイルに以下のどちらかの行を追加してください:
- Apache:
ExecStartPost=/bin/systemctl reload httpd.service
- nginx:
ExecStartPost=/bin/systemctl reload nginx.service