惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
WordPress大学
WordPress大学
C
Check Point Blog
GbyAI
GbyAI
U
Unit 42
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Hugging Face - Blog
Hugging Face - Blog
Vercel News
Vercel News
博客园 - 【当耐特】
美团技术团队
小众软件
小众软件
S
SegmentFault 最新的问题
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Cloudflare Blog
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog

技术改变视野

为程序员、设计师打造的摸鱼社区:摸鱼派! - 技术改变视野 大白话 | Java初学指♂男:“说说初学的误区与死结”( 壹 | 反射与Field ) - 技术改变视野 大白话之耦合性:什么是耦合性和内聚性?用编程语言实例讲解! - 技术改变视野 🎨 适用于 Solo / Bolo 的清新高级主题 —— Sakura | 移植自 WordPress 主题 - 技术改变视野 我在 GitHub 上的开源项目 - 技术改变视野 从 SpringMVC 转为使用 SpringBoot —— 手把手带你使用 Intellij IDEA 最快速地搭建 SpringBoot+MyBatis(无 XML)+Thymeleaf - 技术改变视野 无题 - 技术改变视野 年轻人的第一辆京牌电动车 - 技术改变视野 我们忙碌且漫长的一生,有多久是为自己而活? - 技术改变视野 一个最简单的实例理解Semaphore在Java中的作用 - 技术改变视野 说说《后浪》 - 技术改变视野 离线使用 Google Fonts:让你的网站更精致 | goofoffline 神器,一键下载生成离线字体库! - 技术改变视野 实例带你学会简单的Java Thread多线程 - 技术改变视野 一个实例理解Java的接口(interface)用处与用法 - 技术改变视野 一个实例带你理解JavaBean - 技术改变视野 WebFilter-SpringBoot过滤器注解实例讲解 - 技术改变视野 实例带你搞懂Java多线程&&线程池之(壹):线程池与多线程的关系和区别 - 技术改变视野 实例带你搞懂Java多线程&&线程池之(贰):简单的线程池应用 - 技术改变视野 实例带你获取多线程Thread的返回值之 (壹) - Callable的运行 - 技术改变视野 实例带你获取多线程Thread的返回值之 (贰) - Callable配合线程池返回数据 - 技术改变视野 一个实例理解Java Runnable多线程用处与用法 - 技术改变视野 从零开始OpenSSL之 (壹) - 使用genrsa、rsa、rsautl生成公私钥 - 技术改变视野 从零开始 OpenSSL 之 (贰) - 使用 rsautl 解密文件 - 技术改变视野 大白话之Docker(壹):快速入门&&简单官方实例 - 技术改变视野 大白话之Docker(贰):简单部署一个Tomcat服务并发布内容 - 技术改变视野 大白话之从零讲解DVWA(壹)-SQL注入(SQL Injection) Low Level - 技术改变视野 大白话之从零讲解DVWA(贰)-SQL注入(SQL Injection) Medium/High Level - 技术改变视野 Java日志插件-Slog4J下载 - 技术改变视野 大白话之必会Java Atomic | 线程一点也不安全(一):比自增和synchronized更快速、靠谱的原子操作(调用C语言) - 技术改变视野 Log-MySQL root用户登录后无法查看数据库全部表/正常访问数据库 Access denied for user 'root'@'localhost' to database - 技术改变视野
为IDEA/Git配置GPG密钥,点亮GitHub Verified Commit标识 - ...
adlered · 2021-03-06 · via 技术改变视野

image.png

前言

为 Git 设置一个 GPG 密钥后,将在每次 Commit 时确认你配置的密码,并在 GitHub 的 Commit 中显示 Verified 标识,以此标记这个 Commit 确实是由你本人完成的,而不是其他人的假冒。

image.png

教程

系统环境

操作系统版本:Windows 10 X64
使用的IDE:Intellij IDEA

安装

点击这里下载并安装GPG工具,按照下图中指示下载安装程序

image.png

image.png

image.png

生成一个新的密钥

首先,我们需要生成一个带有个人信息的 GPG 密钥。

生成密钥
1gpg --full-generate-key
  1. 首先 GPG 会询问生成何种加密类型的密钥,直接按回车,默认 RSA and RSA 方式即可
  2. 询问密钥位数,输入 4096 后按回车(GitHub 仅接受 4096 位及以上的位数,安全性更强)
  3. 询问密钥的过期时间,我们一般是不希望密钥过期的,直接按回车默认不过期即可
  4. 询问 “Is this correct?”确认信息输入无误后,输入 y 并回车

image.png

输入个人信息

确认信息无误后,还需要一些你的个人信息。

  1. 询问 Real name,填写你的英文名后回车提交即可(可以和 GitHub 的用户名不同)
  2. 询问 Email address,一定要填写在你的 GitHub 中认证过的邮箱地址
  3. 询问 Comment,备注,填写 GitHub Key(随便填都可以)
  4. 按 o (英文字母)并回车,保存更改

image.png

设置密码

在设置个人信息后,你的电脑会弹出一个密码输入窗口,输入两次相同的密码,为密钥设置密码(一定要记住密码)

image.png

生成完毕

等待证书生成完成(如果生成的很慢,可以在终端里随便按一些英文字母,随便滑两下鼠标,给密钥生成提供一些随机熵)

image.png

将密钥绑定至 GitHub

输入命令获取你的 GPG Key ID
1gpg --list-secret-keys --keyid-format LONG

找到 uid 行和你刚刚设置的信息相同的字段,在 uid 行的上一 sec 行找到你的 GPG Key ID,本次实验的 GPG Key ID 为 58F7B5539BF1B95B,记住它,一会我们要用到几次

image.png

导出完整公钥

使用命令

1gpg --armor --export [GPG Key ID]

image.png

会生成一段很长的公钥内容,将从 -----BEGIN PGP PUBLIC KEY BLOCK----- 开头,以 -----END PGP PUBLIC KEY BLOCK----- 为结尾(包括这两行)的内容复制下来

将公钥放到 GitHub 中

进入 GitHub,访问你的用户设定界面

image.png

找到 SSH and GPG Keys 选项卡,点击 New GPG key 按钮(不要点错,不要点错,不要点错)

image.png

粘贴公钥并保存

image.png

image.png

将密钥绑定至本地 Git

IDEA 调用的是本地的 Git,所以将 Git 直接配置好 GPG Key 即可。

确定 Git 设定的邮箱是否正确

使用命令 git config --global user.email 查看当前 git 命令所使用的邮箱地址,如果不对,请使用 git config --global user.email "新的邮箱地址" 进行更新。

image.png

为 Git 指定 GPG Key ID

还记得刚刚查询的 GPG Key ID 吗?让 git 知道它该使用这个 GPG Key。

1git config --global user.signingkey [你的 GPG Key ID]

image.png

将所有本地 Commit 默认使用 GPG 进行签名

如果不操作本步骤,默认的 commit 还是会直接跳过签名,你可以通过在 commit 时加入 -S 参数来临时使用 GPG 进行签名。

1git config --global commit.gpgsign true

image.png

指定 GPG 程序所在位置

Git 每次 commit 需要向 GPG 程序查找你的 GPG Key,由于新版 GPG 程序的程序目录有变更,Git 程序可能会找不到它而报错,使用命令

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

image.png

文中设定的 gpg.exe 所在位置可能和你安装的位置不同,请仔细核对后设定。

测试

一切就绪,在你的 IDEA 中进行一次 Commit,并且 Push 到 GitHub 中试试吧:

image.png

每次 Commit 都需要验证密钥的密码进行验证:

image.png

再 Push 到 GitHub 试试看:

image.png

image.png

image.png

加密成功,赞。

后语

官方文档原文:

You can sign your work locally using GPG or S/MIME. GitHub will verify these signatures so other people will know that your commits come from a trusted source. GitHub will automatically sign commits you make using the GitHub web interface.

您可以使用 GPG 或 S/MIME 在本地签名您的作品。GitHub 将验证这些签名,以便其他人知道您的提交来自受信任的来源。GitHub 在您使用 GitHub Web 时将自动对 Commits 进行签名。