You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nikola静态网站嵌入GPG公钥?推荐WKD实现方案

在Nikola站点添加GPG公钥的最优方案

我之前用Nikola搭建个人站点时,刚好研究过怎么添加GPG公钥才能既保证Nikola不篡改密钥内容,又让访客能轻松导入。后来过了几个月,我发现WKD是更理想的方案,这里把两个方案都分享给你:

当下最优方案:保证Nikola不修改密钥+访客易导入

核心思路是让Nikola以“原始文件”的方式处理公钥内容,避免Markdown渲染时意外修改格式,同时给访客提供多种导入途径:

  • 步骤1:准备可下载的公钥文件
    把你的GPG公钥导出为.asc格式(比如my-pubkey.asc),将文件放到Nikola项目根目录的files/文件夹里(如果没有这个文件夹就新建一个)。Nikola会自动把files/里的内容原样复制到生成的站点目录,不会做任何修改。

  • 步骤2:在页面中展示公钥并添加下载入口
    在你要展示公钥的页面(比如pages/gpg.md)中添加以下内容:

    ### 我的GPG公钥
    
    你可以通过以下任意一种方式导入我的公钥:
    1. 复制下方代码块的全部内容,打开终端执行 `gpg --import -`,然后粘贴内容并按回车
    2. 下载公钥文件后,执行 `gpg --import my-pubkey.asc`
    
    ```text
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    # 这里粘贴你的完整GPG公钥内容,包括所有行,不要省略开头和结尾的标记
    -----END PGP PUBLIC KEY BLOCK-----
    

    下载我的GPG公钥

  • 步骤3:验证渲染结果
    运行nikola build生成站点后,检查输出目录中对应页面的源码,确认公钥的格式完全没有被修改,下载链接也能正常访问。

7个月后更新:理想方案采用WKD(Web Key Directory)

使用WKD的优势在于,支持WKD的GPG客户端(比如GnuPG 2.1及以上版本)可以自动通过你的域名查找并导入公钥,访客不需要手动复制内容或下载文件,体验更流畅。在Nikola中配置WKD的步骤如下:

  • 步骤1:生成WKD所需的哈希值
    打开终端,执行以下命令(替换成你的邮箱地址):

    gpg --with-wkd-hash your-email@example.com
    

    输出结果中会显示类似hu/abcdef1234567890的路径,其中abcdef1234567890就是你需要的哈希文件名。

  • 步骤2:创建WKD目录结构
    在Nikola项目的files/目录下创建以下层级的文件夹:

    files/.well-known/openpgpkey/hu/
    
  • 步骤3:放置公钥和policy文件

    1. 导出公钥并命名为刚才生成的哈希值:
      gpg --export --armor your-email@example.com > abcdef1234567890
      
      把这个文件放到files/.well-known/openpgpkey/hu/目录下。
    2. 在files/.well-known/openpgpkey/目录下创建一个名为policy的文件,内容仅一行:
      access: unrestricted
      
      这个文件用于告诉GPG客户端该公钥可以公开获取。
  • 步骤4:测试配置
    运行nikola build生成站点后,在终端执行:

    gpg --locate-key your-email@example.com
    

    如果配置正确,GPG会自动通过WKD找到并导入你的公钥。

内容的提问来源于stack exchange,提问作者Jonas Stein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 12:07:28