「Dehydrated」:修訂間差異

出自Gea-Suan Lin's Wiki
跳至導覽 跳至搜尋
本頁面具有訪問限制。如果您看見此訊息,這代表您沒有訪問本頁面的權限。
行 71: 行 71:


=== dns-01 ===
=== dns-01 ===
<code>dns-01</code>會需要 增加<code>TXT</code> record 這邊會使用[[lexicon]],所以系統內需要安裝[[Python]](不 合用pyenv,因為跑dehydrated通常使用root權限) 。這邊用Python 2或是Python 3都可以
<code>dns-01</code>會需要 使用<code>TXT</code> record 認證。 這邊會使用[[lexicon]],所以系統內需要安裝[[Python]](不 合用pyenv,因為跑dehydrated通常使用root權限)。


lexicon的<code>examples/dehydrated.default.sh</code>是拿來將dehydrated的hook指令介接給lexicon用, 這個檔案複製到<code>/usr/sbin/lexicon-dehydrated.default.sh</code>以便後續更新。
這邊用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提供服務)。

安裝

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以便後續更新。

執行

第一次需要同意條款:

$ 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(以及其他有用到的服務)。

外部連結