Dehydrated:修订间差异

来自Gea-Suan Lin's Wiki
跳到导航 跳到搜索
此页面具有访问限制。如果您看见此消息,则说明您没有权限访问此页面。
第93行: 第93行:
== 執行 ==
== 執行 ==
 第一次需要同意條款:
 第一次需要同意條款:
<syntaxhighlight lang="shell-session">
<syntaxhighlight lang="shell-session">
$ sudo dehydrated --register --accept-terms
$ sudo dehydrated --register --accept-terms
第98行: 第99行:


 之後就可以用<code>-c</code>自動更新:
 之後就可以用<code>-c</code>自動更新:
<syntaxhighlight lang="shell-session">
<syntaxhighlight lang="shell-session">
$ sudo dehydrated -c
$ sudo dehydrated -c
</syntaxhighlight>
</syntaxhighlight>


 如果 是Wildcard的,則需要指定<code>dns-01</code> 以及 對應的API token:
 如果 是使用<code>dns-01</code> (像是Wildcard),需要在環境變數裡提供 對應的API token:
 
<syntaxhighlight lang="shell-session">
<syntaxhighlight lang="shell-session">
$ sudo PROVIDER=digitalocean LEXICON_DIGITALOCEAN_TOKEN=x dehydrated -c -k /usr/sbin/lexicon-dehydrated.default.sh --challenge dns-01
$ sudo PROVIDER=digitalocean LEXICON_DIGITALOCEAN_TOKEN=x dehydrated -c -k /usr/sbin/lexicon-dehydrated.default.sh --challenge dns-01
</syntaxhighlight>
</syntaxhighlight>
另外因為lexicon在設定DNS的值之後,預設會停30秒才會跑下一步,會比較慢,請耐心等待。


== 後續 ==
== 後續 ==

2018年4月19日 (四) 10:12的版本

dehydrated是一套支援ACME协定的套件(目前仅由Let's Encrypt提供服务)。

安装

Ubuntu上可以透过我的PPA安装:

$ 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以便后续更新:

$ cd /tmp
$ git clone https://github.com/AnalogJ/lexicon.git
$ sudo cp lexicon/examples/dehydrated.default.sh /usr/sbin/lexicon-dehydrated.default.sh

执行

第一次需要同意条款:

$ sudo dehydrated --register --accept-terms

之后就可以用-c自动更新:

$ sudo dehydrated -c

如果是使用dns-01(像是Wildcard),需要在环境变数里提供对应的API token:

$ sudo PROVIDER=digitalocean LEXICON_DIGITALOCEAN_TOKEN=x dehydrated -c -k /usr/sbin/lexicon-dehydrated.default.sh --challenge dns-01

另外因为lexicon在设定DNS的值之后,预设会停30秒才会跑下一步,会比较慢,请耐心等待。

后续

上面提到更新的指令可以放到/etc/cron.weekly内执行,透过传回值可以判断是否有更新,然后重跑nginx或是Postfix(以及其他有用到的服务)。

外部链接