Dehydrated:修订间差异
(→dns-01) |
(→dns-01) |
||
第71行: | 第71行: | ||
=== dns-01 === | === dns-01 === | ||
<code>dns-01</code>會需要 | <code>dns-01</code>會需要 使用<code>TXT</code> record 認證。 這邊會使用[[lexicon]],所以系統內需要安裝[[Python]](不 適 合用pyenv,因為跑dehydrated通常使用root權限)。 | ||
lexicon的<code>examples/dehydrated.default.sh</code>是拿來將dehydrated的hook指令介接給lexicon用, | 這邊用Python 2說明: | ||
<syntaxhighlight lang="shell-session"> | |||
$ sudo apt install python python-pip | |||
</syntaxhighlight> | |||
然後安裝lexicon: | |||
<syntaxhighlight lang="shell-session"> | |||
$ sudo pip install dns-lexicon | |||
</syntaxhighlight> | |||
另外lexicon 的<code>examples/dehydrated.default.sh</code>是拿來將dehydrated的hook指令介接給lexicon用, 所以需要下載 這個檔案 , 複製到<code>/usr/sbin/lexicon-dehydrated.default.sh</code>以便後續更新。 | |||
== 執行 == | == 執行 == |
2018年4月19日 (四) 09:49的版本
dehydrated是一套支援ACME协定的套件(目前仅由Let's Encrypt提供服务)。
安装
$ sudo add-apt-repository ppa:gslin/dehydrated
$ sudo apt update
$ sudo apt install dehydrated
基本设定
dehydrated在侦测到/etc/dehydrated/config
或/usr/local/etc/dehydrated/config
时(两个都有时前者优先),会将/etc/dehydrated
或是/usr/local/etc
当作设定目录,所以我们需要产生/etc/dehydrated/config
,目前里面不需要有东西:
$ sudo mkdir /etc/dehydrated
$ sudo touch /etc/dehydrated/config
进阶设定
在config
内可以设定开启凭证内标示一定要开OCSP Stapling:
OCSP_MUST_STAPLE=yes
在config
内可以设定KEYSIZE
,预设是4096,可以改成2048:
KEYSIZE=2048
域名设定
Domain
Domain的认证可以透过http-01
或是dns-01
的协定,这边是用http-01
的方式认证。
在domains.txt
内一行是一张凭证,有几种方式可以设定。
一张凭证一个域名
一行放一个域名,将需要申请的域名放到domains.txt
内:
$ cd /etc/dehydrated
$ echo 'blog.gslin.org' | sudo tee -a domains.txt
$ echo 'wiki.gslin.org' | sudo tee -a domains.txt
一张凭证多个域名
将想要放在同一张凭证的域名放在同一行,一样是domains.txt
内:
$ cd /etc/dehydrated
$ echo 'blog.gslin.org wiki.gslin.org' | sudo tee -a domains.txt
Wildcard
Wildcard的认证只能透过dns-01
,而且一定要有一个主域名(没有*
)的:
$ cd /etc/dehydrated
$ echo 'gslin.org *.gslin.org' | sudo tee -a domains.txt
认证设定
http-01
dehydrated预设会用/var/www/dehydrated
作为认证目录,需要将网页的/.well-known/acme-challenge/
指到这边。以nginx的设定会像是这样:
server { # ... # map /var/www/dehydrated/ location /.well-known/acme-challenge/ { alias /var/www/dehydrated/; } }
dns-01
dns-01
会需要使用TXT
record认证。这边会使用lexicon,所以系统内需要安装Python(不适合用pyenv,因为跑dehydrated通常使用root权限)。
这边用Python 2说明:
$ sudo apt install python python-pip
然后安装lexicon:
$ sudo pip install dns-lexicon
另外lexicon的examples/dehydrated.default.sh
是拿来将dehydrated的hook指令介接给lexicon用,所以需要下载这个档案,复制到/usr/sbin/lexicon-dehydrated.default.sh
以便后续更新。
执行
第一次需要同意条款:
$ sudo dehydrated --register --accept-terms
之后就可以用-c
自动更新:
$ sudo dehydrated -c
如果是Wildcard的,则需要指定dns-01
以及对应的API token:
$ sudo PROVIDER=digitalocean LEXICON_DIGITALOCEAN_TOKEN=x dehydrated -c --hook /usr/sbin/lexicon-dehydrated.default.sh --challenge dns-01
后续
上面提到更新的指令可以放到/etc/cron.weekly
内执行,透过传回值可以判断是否有更新,然后重跑nginx或是Postfix(以及其他有用到的服务)。