Canokey入门指南:F2A、OpenPGP、PIV
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
右上角Add account
增加F2A
Issuer: 备注 可选
Account name : 用户名 必填项
Secret Key : Hotp或Totp的key 必填项
OpenPGP
安装GPG
Windows 用户可下载 Gpg4Win,Linux/macOS 用户使用对应包管理软件安装即可.
生成主密钥
gpg --expert --full-gen-key #生成GPG KEY
推荐使用ECC
算法
选择(11) ECC (set your own capabilities) # 设置自己的功能 主密钥只保留 Certify 功能,其他功能(Encr,Sign,Auth)使用子密钥
# 子密钥分成三份,分别获得三个不同的功能
# encr 解密功能
# sign 签名功能
# auth 登录验证功能
先选择 (S) Toggle the sign capability
之后输入q 退出
键入1,选择默认算法
设置主密钥永不过期
填写信息,按照实际情况填写即可
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
,方便直接使用。
Canokey入门指南:F2A、OpenPGP、PIV相关推荐
- 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...
- Maven入门指南⑦:Maven的生命周期和插件
Maven入门指南⑦:Maven的生命周期和插件 一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周 ...
- UE4风格化场景设计入门指南 Stylized Station – The Environment Artist’s Survival Kit
持续时间13h 1920X1080 .ts 包含项目文件 大小解压后:4.9G 语言:英语+中文字幕(人工校对) 标题:风格化的车站--环境艺术家的生存工具包 信息: 环境艺术很难. 尤其是作为初学者 ...
- 游戏风格化角色创建入门指南视频教程
游戏风格化角色创建入门指南视频教程 时间 33小时 包括项目文件 1920X1080 MP4 语言:英语+中文字幕(根据原英文字幕机译更准确)+原英文字幕 游戏中的风格化角色创建入门指南 百度一下 ...
- mongoDB 入门指南、示例
http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongoDB 入门指南.示例 上一篇:简单介绍mongoDB 一.准备工作 ...
- 智能合约和区块链技术:入门指南
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约和区块链技术:入门指南 多年前,在没有数字合约和区块链技术存在的情况下,双方的合约往往以传统的方式进行.在加密货 ...
- 数据分析从头学_数据新闻学入门指南:让我们从头开始构建故事
数据分析从头学 by Mina Demian 由Mina Demian 数据新闻学入门指南:让我们从头开始构建故事 (A Beginner's Guide to Data Journalism: Le ...
- 《Redis入门指南(第2版)》一第2章 准备
本节书摘来异步社区<Redis入门指南(第2版)>一书中的第2章,作者: 李子骅 责编: 杨海玲,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第2章 准备 R ...
- jQuery中文入门指南,翻译加实例,jQuery的起点教程
中文版译者:Keel 此文以实例为基础一步步说明了jQuery的工作方式.现以中文翻译(添加我的补充说明)如下.如有相关意见或建议请 EMAIL 告知.或者在 BLOG中留言. 英文原版:http:/ ...
最新文章
- es父子结构查询_ES 父子文档查询
- NR 5G 网络功能之AMF
- Spark API编程动手实战-08-基于IDEA使用Spark API开发Spark程序-01
- preventDefault, stopPropagation, stopImmediatePropagation 三者的区别
- 机器学习笔记(1)决策树
- Matlab循环语句
- inter Fortran安装匹配VS2012
- 第二课 Python Web企业门户网站-框架搭建
- 《自然遗传学》:一个基因变异就能引发神经发育障碍
- SourceTree和Bitbucket使用时的注意事项
- Linux系统编程—进程间通信—共享内存
- 如何安排自己大学阶段的学习才能成为一名优秀的 Quant?
- 异步mysql java_java – 异步http客户端(ning)创建更多线程?
- 2012中国移动信息化高峰论坛大会资料免费下载
- PHP实现 网页图片上传
- 他,10年软件开发经验,告诉你30岁后的程序员如何成功转型?
- 数据结构——树、森林、二叉树的转换
- Java基础高频面试题
- u盘加密 linux,kali linux 持久加密U盘安装
- 计算机应用基础任务化教程135,在PowerPoint 2010中SmartArt图形的制作及技巧