Canokey入门指南:F2A、OpenPGP、PIV

简介: 相信大伙都知道yubikey吧,那么Canokey呢?

Canokeys

F2A

Canokey使用Yubikey Authenticator来进行管理F2A

下载Yubikey Authenticator,以下为Yubikey Authenticator官方下载网址

https://www.yubico.com/products/yubico-authenticator/#h-download-yubico-authenticator

运行Yubikey Authenticator

进入custom reader,在Custom reader fiter处填入 CanoKey

填入CanoKey

右上角Add account 增加F2A

添加F2A

Issuer: 备注 可选
Account name : 用户名 必填项
Secret Key : Hotp或Totp的key 必填项

OpenPGP

安装GPG

Windows 用户可下载 Gpg4Win,Linux/macOS 用户使用对应包管理软件安装即可.

生成主密钥

gpg --expert --full-gen-key #生成GPG KEY

推荐使用ECC算法

image-20220102223722475

选择(11) ECC (set your own capabilities) # 设置自己的功能 主密钥只保留 Certify 功能,其他功能(Encr,Sign,Auth)使用子密钥
# 子密钥分成三份,分别获得三个不同的功能
# encr 解密功能
# sign 签名功能
# auth 登录验证功能
先选择 (S) Toggle the sign capability 

image-20220102224151589

之后输入q 退出

键入1,选择默认算法

键入1,选择默认算法

设置主密钥永不过期

image-20220102224451731

填写信息,按照实际情况填写即可

image-20220102224612167

Windnows 下会弹出窗口输入密码,注意一定要保管好!!!
# 会自动生成吊销证书,注意保存到安全的地方
gpg: AllowSetForegroundWindow(22428) failed: �ܾ����ʡ�
gpg: revocation certificate stored as 'C:\\Users\\Andorid\\AppData\\Roaming\\gnupg\\openpgp-revocs.d\\<此处为私钥>.rev'
# 以上的REV文件即为吊销证书
public and secret key created and signed.
pub   ed25519 2022-01-02 [SC]
      <此处为Pub>
uid                      <此处为Name> <此处为email>

生成子密钥

 gpg --fingerprint --keyid-format long -K

下面生成不同功能的子密钥,其中 <fingerprint> 为上面输出的密钥指纹,本示例中即为 私钥。最后的 2y 为密钥过期时间,可自行设置,如不填写默认永不过期。

gpg --quick-add-key <fingerprint> cv25519 encr 2y
gpg --quick-add-key <fingerprint> ed25519 auth 2y
gpg --quick-add-key <fingerprint> ed25519 sign 2y

再次查看目前的私钥,可以看到已经包含了这三个子密钥。

gpg --fingerprint --keyid-format long -K

上面生成了三种功能的子密钥(ssb),分别为加密(E)、认证(A)、签名(S),对应 OpenPGP Applet 中的三个插槽。由于 ECC 实现的原因,加密密钥的算法区别于其他密钥的算法。

加密密钥用于加密文件和信息。签名密钥主要用于给自己的信息签名,保证这真的是来自的信息。认证密钥主要用于 SSH 登录。

备份GPG

# 公钥
gpg -ao public-key.pub --export <ed25519/16位>
# 主密钥,请务必保存好!!!
# 注意 key id 后面的 !,表示只导出这一个私钥,若没有的话默认导出全部私钥。
gpg -ao sec-key.asc --export-secret-key <ed25519/16位>!
# sign子密钥
gpg -ao sign-key.asc --export-secret-key <ed25519/16位>!
gpg -ao auth-key.asc --export-secret-key <ed25519/16位>!
gpg -ao encr-key.asc --export-secret-key <ed25519/16位>!

导入Canokey

# 查看智能卡设备状态
gpg --card-status
# 写入GPG
gpg --edit-key <ed25519/16位> # 为上方的sec-key
# 选中第一个子密钥
key 1
# 写入到智能卡
keytocard
# 再次输入,取消选择
key 1
# 选择第二个子密钥
key 2
keytocard
key 2
key 3
keytocard
# 保存修改并退出
save

#再次查看设备状态,可以看到此时子密钥标识符为 ssb>,表示本地只有一个指向 card-no: F1D0 xxxxxxxx 智能卡的指针,已不存在私钥。现在可以删除掉主密钥了,请再次确认你已安全备份好主密钥。
gpg --card-status

删除本地密钥

gpg --delete-secret-keys <ed25519/16位> # 为上方的sec-key

为确保安全,也可直接删除 gpg 的工作目录:%APPDATA%\gnupg,Linux/macOS: ~/.gunpg

使用 Canokey

此时切换回日常使用的环境,首先导入公钥

gpg --import public-key.pub

然后设置子密钥指向 Canokey

gpg --edit-card
gpg/card> fetch

此时查看本地的私钥,可以看到已经指向了 Canokey

gpg --fingerprint --keyid-format long -K

配置gpg路径

git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe" --replace-all

Git Commit 签名

首先确保 Git 本地配置以及 GitHub 中的邮箱信息包含在 UID 中,然后设置 Git 来指定使用子密钥中的签名(S)密钥。

git config --global user.signingkey <ed25519/16位> # 为上方的Sign密钥

之后在 git commit 时增加 -S 参数即可使用 gpg 进行签名。也可在配置中设置自动 gpg 签名,此处不建议全局开启该选项,因为有的脚本可能会使用 git am 之类的涉及到 commit 的命令,如果全局开启的话会导致问题。

git config commit.gpgsign true

如果提交到 GitHub,前往 GitHub SSH and GPG keys 添加公钥。此处添加后,可以直接通过对应 GitHub ID 来获取公钥:https://github.com/<yourid>.gpg

PIV

首先在Web端添加自己的私钥到智能卡,之后前往 WinCrypt SSH Agent 下载并运行,此时查看 ssh-agent 读取到的公钥信息,把输出的公钥信息添加到服务器的 ~/.ssh/authorized_keys

# 设置环境池
$Env:SSH_AUTH_SOCK="\\.\pipe\openssh-ssh-agent"
# 查看ssh列表
ssh-add -L

此时连接 ssh user@host,会弹出提示输入 PIN 的页面,注意此时输入的是 PIV Applet PIN,输入后即可成功连接服务器。

tips: 可能会出现权限不够的情况,需要禁用Windows服务OpenSSH Authentication Agent

最后可以把该程序快捷方式添加到启动目录 %AppData%\Microsoft\Windows\Start Menu\Programs\Startup,方便直接使用。

目录
相关文章
|
Ubuntu
避坑指南之Samba4在Ubuntu20.04 编译安装指南
避坑指南之Samba4在Ubuntu20.04 编译安装指南
1365 0
避坑指南之Samba4在Ubuntu20.04 编译安装指南
|
Linux 数据安全/隐私保护 Windows
更换(Pypi)pip源到国内镜像
pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.
249086 2
|
安全 搜索推荐 网络安全
U2F和FIDO2 两种安全认证技术优劣势对比?如何选择?
数字化时代,网络安全至关重要。FIDO U2F和FIDO2是两种领先的安全认证技术,前者通过物理密钥提供双因素认证,后者则支持无密码认证和生物识别,两者均显著提升了账户安全性。本文详细介绍这两种技术的特点、优缺点及其应用场景,帮助企业选择最适合的安全认证方案。
1740 7
|
12月前
|
机器学习/深度学习 人工智能 大数据
35岁+大数据人必看:这6个证书,帮你把年龄变成职场「护城河」
35岁不是"职场黄昏",而是"经验红利期"。这些证书不是用来"装门面"的,而是帮你把十几年积累的行业认知,和最新的技术趋势结合起来的"加速器"。 考证的过程,本质上是逼自己跳出舒适区——你可能会重新学Python、研究机器学习模型、梳理数据治理流程,但这些"额外"的努力,都会变成你简历上的亮点、面试时的底气、谈薪资时的筹码。 记住:企业永远愿意为"能解决问题的人"买单。35岁的你,有经验、懂业务、还能学习新东西,这就是你最硬核的竞争力。 现在就开始挑一个证书,把焦虑变成行动力——毕竟,中年危机不可怕,可怕的是你还没开始准备。
|
缓存 关系型数据库 PostgreSQL
PostgreSQL自增ID的初始化语句
【5月更文挑战第10天】PostgreSQL自增ID的初始化语句
905 2
|
安全 Java 数据安全/隐私保护
Spring Security: 深入解析 AuthenticationSuccessHandler
本文深入解析了 Spring Security 中的 `AuthenticationSuccessHandler` 接口,它用于处理用户认证成功后的逻辑。通过实现该接口,开发者可自定义页面跳转、日志记录等功能。文章详细讲解了接口方法参数及使用场景,并提供了一个根据用户角色动态跳转页面的示例。结合 Spring Security 配置,展示了如何注册自定义的成功处理器,帮助开发者灵活应对认证后的多样化需求。
507 2
|
机器学习/深度学习 存储 自然语言处理
魔搭社区每周速递(9.1-9.7)
182个模型、211个数据集、38个创新应用、6篇应用文章
魔搭社区每周速递(9.1-9.7)
|
IDE 开发工具 虚拟化
EFI VMware Virtual SCSI Hard Drive (0.0) ... No Media
EFI VMware Virtual SCSI Hard Drive (0.0) ... No Media
|
缓存 Shell 开发工具
Git Bash⭐一、安装软件,与Git Bash基础命令
Git Bash⭐一、安装软件,与Git Bash基础命令
|
存储 IDE 搜索推荐
解锁Python黑科技:字典树Trie,让你的数据检索快到飞起!
字典树(Trie),又称前缀树或单词查找树,是一种专为字符串快速检索设计的高效数据结构。本文深入探讨了Trie树的基本原理及其在Python中的实现方法,并展示了如何通过插入和搜索操作来提高数据检索性能。Trie树广泛应用于自动补全、拼写检查、IP路由表以及数据压缩等领域,其高效的前缀匹配能力使其成为处理大量字符串的理想选择。通过本文的学习,你将能更好地利用Trie树解决实际问题,提升编程技能。
719 0