<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nas on aarkegz 技术屋</title><link>https://aarkegz.com/nas/</link><description>Recent content in Nas on aarkegz 技术屋</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sat, 08 Mar 2025 09:39:30 +0800</lastBuildDate><atom:link href="https://aarkegz.com/nas/index.xml" rel="self" type="application/rss+xml"/><item><title>使用 acme.sh 和 Docker 为 群晖（Synology）NAS 申请 SSL 证书</title><link>https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/</link><pubDate>Sat, 08 Mar 2025 09:39:30 +0800</pubDate><guid>https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/</guid><description>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/20250421071537-f7584725-psxr-1280x720.png" alt="Featured image of post 使用 acme.sh 和 Docker 为 群晖（Synology）NAS 申请 SSL 证书" />&lt;h2 id="前言">前言
&lt;/h2>&lt;p>群晖 NAS 内置了 Let&amp;rsquo;s Encrypt 的证书申请功能，可以为其申请免费的 SSL 证书，并且可以指定域名。然而，群晖 NAS 内置的证书申请功能需要开放能被 Let&amp;rsquo;s Encrypt 访问的 80 或 443 端口，很多时候这是无法做到的。因此，我们需要另辟蹊径，使用 &lt;code>acme.sh&lt;/code> 和 Docker，通过 DNS 验证的方式为群晖 NAS 申请 SSL 证书。这个做法的好处在于，不需要修改 NAS 的系统配置，也不需要通过 SSH 登录到 NAS 的命令行，便于备份和迁移的同时，没有因为误操作而导致系统损坏的风险。&lt;/p>
&lt;h2 id="准备工作">准备工作
&lt;/h2>&lt;h3 id="准备-acmesh-镜像">准备 &lt;code>acme.sh&lt;/code> 镜像
&lt;/h3>&lt;p>首先，在套件中心中安装 Container Manager：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/container-manager-installation.png"
width="2100"
height="1144"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/container-manager-installation_hu_314a80becd54bd86.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/container-manager-installation_hu_d5760a94c0f31eb6.png 1024w"
loading="lazy"
alt="安装Container Manager"
class="gallery-image"
data-flex-grow="183"
data-flex-basis="440px"
>&lt;/p>
&lt;p>由于网络原因，需要在 Container Manager 中手动添加一个 Docker 镜像源才能正常使用。在网络上找到一个可用的 Docker 镜像源地址，然后打开 Container Manager，选择左侧的「注册表」，点击上方的「设置」，在设置窗口中点击「添加」，输入镜像源的地址，然后点击「应用」，回到设置窗口中，选中新添加的镜像源，点击「使用」，最后关闭设置窗口：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/container-manager-registry.png"
width="2394"
height="1270"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/container-manager-registry_hu_23550eaaa67ada53.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/container-manager-registry_hu_7c034920db5b53b1.png 1024w"
loading="lazy"
alt="添加镜像源"
class="gallery-image"
data-flex-grow="188"
data-flex-basis="452px"
>&lt;/p>
&lt;p>在搜索框中搜索 &lt;code>neilpang/acme.sh&lt;/code> 镜像。注意由于群晖的搜索机制的原因，正确结果可能出现在非常靠后的位置，需要耐心翻页。找到 &lt;code>neilpang/acme.sh&lt;/code> 镜像后，点击上方的下载按钮，标签保持 &lt;code>latest&lt;/code>即可：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/container-manager-acme-sh.png"
width="2382"
height="1268"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/container-manager-acme-sh_hu_258f6189a4fad6d5.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/container-manager-acme-sh_hu_627aa66d53f211cf.png 1024w"
loading="lazy"
alt="下载 acme.sh 镜像"
class="gallery-image"
data-flex-grow="187"
data-flex-basis="450px"
>&lt;/p>
&lt;h3 id="准备存储空间">准备存储空间
&lt;/h3>&lt;p>在群晖 NAS 中创建一个文件夹，用以存放 &lt;code>acme.sh&lt;/code> 的配置文件和证书文件。推荐单独为了各类 Docker 容器创建一个共享文件夹，然后在其中创建一个 &lt;code>acme-sh&lt;/code> 文件夹：&lt;/p>
&lt;p>&lt;strong>注意：配置文件和证书文件中可能包含敏感信息，因此请不要将其放在公共可访问的位置！&lt;/strong>&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/prepare-storage-space.png"
width="2012"
height="1124"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/prepare-storage-space_hu_9a00193c381b1f32.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/prepare-storage-space_hu_b1b6ebf8e0cfaac7.png 1024w"
loading="lazy"
alt="准备存储空间"
class="gallery-image"
data-flex-grow="179"
data-flex-basis="429px"
>&lt;/p>
&lt;h2 id="申请-ssl-证书">申请 SSL 证书
&lt;/h2>&lt;p>做完上述准备工作后，我们就可以开始申请 SSL 证书了。申请证书的全过程都在 Docker 容器的命令行中进行。&lt;/p>
&lt;h3 id="创建-acmesh-容器">创建 &lt;code>acme.sh&lt;/code> 容器
&lt;/h3>&lt;p>在 Container Manager 中，点击左侧的「映像」，找到 &lt;code>neilpang/acme.sh&lt;/code> 镜像，选中之后点击上方的「运行」：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-0.png"
width="2392"
height="1268"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-0_hu_f6efeed6ab83f48c.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-0_hu_c0d38da80c9d7cae.png 1024w"
loading="lazy"
alt="创建容器-0"
class="gallery-image"
data-flex-grow="188"
data-flex-basis="452px"
>&lt;/p>
&lt;p>在弹出的向导中，填写容器的名称，并且勾选「启用自动重新启动」，然后点击「下一步」：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-1.png"
width="1474"
height="1150"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-1_hu_dd5dfab9a34f4fc7.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-1_hu_f995f222d4827aa9.png 1024w"
loading="lazy"
alt="创建容器-1"
class="gallery-image"
data-flex-grow="128"
data-flex-basis="307px"
>&lt;/p>
&lt;p>在「高级设置」中，找到「存储空间设置」，点击「添加文件夹」，选择之前创建的 &lt;code>acme-sh&lt;/code> 文件夹，右侧填写 &lt;code>/acme.sh&lt;/code>，权限保持「读取/写入」：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-2.png"
width="1466"
height="1146"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-2_hu_33f18b65bb4e1ca3.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-2_hu_f5347ad12395264b.png 1024w"
loading="lazy"
alt="创建容器-2"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="307px"
>&lt;/p>
&lt;p>向下翻动页面，找到「网络」，将网络模式更改为「host」；找到「执行命令」，在「命令」中填写 &lt;code>daemon&lt;/code>，其他设置保持默认，然后点击「下一步」：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-3.png"
width="1470"
height="1152"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-3_hu_55189c99e0e1653f.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-3_hu_9659d211db7f4cea.png 1024w"
loading="lazy"
alt="创建容器-3"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>确认设置后，点击「应用」，等待容器启动：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-4.png"
width="1470"
height="1152"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-4_hu_28c13cdf4df8aa3e.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/create-container-4_hu_7f0d98e2728cfd58.png 1024w"
loading="lazy"
alt="创建容器-4"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;h3 id="打开终端">打开终端
&lt;/h3>&lt;p>回到 Container Manager 的「容器」页面，找到刚刚创建的 &lt;code>acme.sh&lt;/code> 容器，点击上方的「操作」，选择「打开终端机」：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/open-terminal.png"
width="2390"
height="1264"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/open-terminal_hu_ba039f5401920703.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/open-terminal_hu_242afe32cffef86e.png 1024w"
loading="lazy"
alt="打开终端"
class="gallery-image"
data-flex-grow="189"
data-flex-basis="453px"
>&lt;/p>
&lt;p>在弹出的窗口中，选择「新增」右侧的下拉按钮，点击「通过命令启动」，输入 &lt;code>/bin/sh&lt;/code>，然后点击「确定」：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/open-sh-0.png"
width="1856"
height="1156"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/open-sh-0_hu_76ff6ce7c425df28.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/open-sh-0_hu_6d49414a68fc4dff.png 1024w"
loading="lazy"
alt="打开sh-0"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="385px"
>&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/open-sh-1.png"
width="1847"
height="1145"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/open-sh-1_hu_fb811eaab2db17f5.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/open-sh-1_hu_ae100f90cc5d068d.png 1024w"
loading="lazy"
alt="打开sh-1"
class="gallery-image"
data-flex-grow="161"
data-flex-basis="387px"
>&lt;/p>
&lt;p>点击左侧的 &lt;code>sh&lt;/code>，应该能看到一个命令行窗口，以下的操作都在这个窗口中进行：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/sh-open.png"
width="1854"
height="1156"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/sh-open_hu_ff8b6ac10eff4cb2.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/sh-open_hu_5e458d4bc67fe496.png 1024w"
loading="lazy"
alt="sh已经打开"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="384px"
>&lt;/p>
&lt;h3 id="注册-zerossl">注册 ZeroSSL
&lt;/h3>&lt;p>&lt;code>acme.sh&lt;/code> 默认使用 ZeroSSL 作为 ACME 服务商，因此我们需要注册 ZeroSSL。在命令行中执行（注意替换为自己的邮箱地址）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>acme.sh --register-account -m myemail@example.com --server zerossl
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/register-zero-ssl.png"
width="1850"
height="1152"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/register-zero-ssl_hu_2f253dec7a84752b.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/register-zero-ssl_hu_bfb536facf0eca80.png 1024w"
loading="lazy"
alt="注册ZeroSSL"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="385px"
>&lt;/p>
&lt;p>如果你已经在 ZeroSSL 的网站上注册过，可以参考 &lt;a class="link" href="https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA" target="_blank" rel="noopener"
>&lt;code>acme.sh&lt;/code> 的文档&lt;/a>，使用 EAB 绑定。&lt;/p>
&lt;h3 id="申请证书">申请证书
&lt;/h3>&lt;p>接下来，我们就可以申请证书了。根据你的 DNS 服务商，&lt;a class="link" href="https://github.com/acmesh-official/acme.sh/wiki/dnsapi" target="_blank" rel="noopener"
>选择合适的生成 Token 的方式&lt;/a>，这里以 Cloudflare 为例。在命令行中执行（注意替换为自己的 Zone ID、Token 和域名）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>export CF_Zone_ID&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;your_zone_id&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>export CF_Token&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;your_token&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>acme.sh --issue --dns dns_cf -d your.domain.com
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/issue-cert-0.png"
width="1852"
height="1154"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/issue-cert-0_hu_65213c7178d31471.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/issue-cert-0_hu_a96c74858553da48.png 1024w"
loading="lazy"
alt="申请证书-0"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="385px"
>&lt;/p>
&lt;p>等待一段时间之后，证书就会生成在 &lt;code>/acme.sh/your.domain.com&lt;/code> 目录下，同时证书的相关信息也会输出到命令行中：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/issue-cert-1.png"
width="1848"
height="1154"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/issue-cert-1_hu_92c9e975b78e4cbd.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/issue-cert-1_hu_947b9de045a34349.png 1024w"
loading="lazy"
alt="申请证书-1"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="384px"
>&lt;/p>
&lt;h3 id="安装证书">安装证书
&lt;/h3>&lt;p>最后，我们需要将证书安装到群晖 NAS 上。在命令行中执行（注意替换为自己的群晖用户名和密码，以及域名）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>export SYNO_USERNAME&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;your_synology_username&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>export SYNO_PASSWORD&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;your_synology_password&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>acme.sh --deploy -d your.domain.com --deploy-hook synology_dsm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/deploy-cert.png"
width="1852"
height="1156"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/deploy-cert_hu_d13ad22252957141.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/deploy-cert_hu_39de9b777b41fa4d.png 1024w"
loading="lazy"
alt="安装证书"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="384px"
>&lt;/p>
&lt;p>至此，我们已经成功为群晖 NAS 申请了 SSL 证书，并且安装到了系统中。完成以上步骤之后，可以在终端机删除掉 &lt;code>sh&lt;/code>，但是不要删除 &lt;code>acme.sh&lt;/code> 容器，它会定期完成证书的更新工作。&lt;/p>
&lt;h2 id="配置证书">配置证书
&lt;/h2>&lt;p>在群晖 NAS 的控制面板中，找到「安全性」-「证书」，可以看到刚刚申请的证书已经安装到系统中：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/view-cert.png"
width="2288"
height="1292"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/view-cert_hu_def634b599c09839.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/view-cert_hu_ac6f2f613cc4fbeb.png 1024w"
loading="lazy"
alt="查看证书"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="425px"
>&lt;/p>
&lt;p>点击「设置」，可以将证书应用到 HTTPS 服务中：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/use-cert.png"
width="2286"
height="1290"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/use-cert_hu_3670e8c76811b506.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/use-cert_hu_d367cdf3b2f580b6.png 1024w"
loading="lazy"
alt="应用证书"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="425px"
>&lt;/p>
&lt;p>再次访问服务，可以看到已经使用了新的证书：&lt;/p>
&lt;p>&lt;img src="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/success-usage.png"
width="608"
height="512"
srcset="https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/success-usage_hu_7172017f1b751636.png 480w, https://aarkegz.com/nas/synology-cert-with-acme-sh-and-docker/images/success-usage_hu_950e48e76d1018c6.png 1024w"
loading="lazy"
alt="成功使用"
class="gallery-image"
data-flex-grow="118"
data-flex-basis="285px"
>&lt;/p></description></item></channel></rss>