将Github上的提交标记为Verified<span>认证签名</span>

将Github上的提交标记为Verified认证签名

04396

前言

2021年3月28日,有身份不明人士入侵了PHP编程语言的官方Git服务器http://git.php.net,并上传了未经授权的更新包,而包中源代码被插入了后门代码!!!

这两个恶意提交被推送到git.php.net服务器上的自托管php-src存储库中,使用的是编程语言的作者Rasmus Lerdorf和Microsoft的软件开发人员Nikita Popov的名字Jetbrains。

PHP官方发布紧急公告指出:

2021-03-28,两个恶意代码分支提交到了php-src repo上,使用的是内部人员的名字,目前内部不知道是如何发生,但是一切都指向了git.php.net服务器可能被入侵的情况。
尽管目前正在调查,但是为了确保安全,我们已经停止了git.php.net服务器,之后会跳转到Github上的镜像存储库中。

引用ESET:Backdoor added to PHP source code in Git server breach | WeLiveSecurity

看到这里是不是很惊讶😮,2亿多使用量的PHP服务器居然被黑了😳😳,现已全面移至Github托管,术业有专攻不无道理

我们平时使用的Github是比较安全的,那么如何让自己的账户更加安全呢?😕
1、启用账户双重验证 2、Git提交使用Verified认证

双重验证相信大家都会,那么这篇文章就带你一起来使用Verified认证

生成GPG密钥

Github 在提交命令时并不会去验证邮箱的正确性, 也就是可以邮箱是可以伪造的 ,为了避免这种情况的出现,可以使用 Verified( 认证)。

一、安装GnuPG套件

二、打开 Git Bash

三、生成一个密钥(可在Linux控制台,Windows下有Cygwin64等)

四、使用命令开始创建GPG 密钥

  1. 命令:gpg --full-generate-key
  2. Your selection? 选择RSA,这里默认是RAS那么回车即可
  3. What keysize do you want? RSA密钥长度,默认3072 回车
  4. Key is valid for? 过期时间,0为永不过期,输入0回车
  5. s this correct? 检查是否正确,正确输入Y继续下一步
  6. Real name: 用户名
  7. Email address: 邮箱,注意这里必须和Github主邮箱一致
  8. Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? 确认没问题后,输入O开始生成密钥
  9. 创建密码
$ gpg --full-generate-key # 创建GPG 密钥
gpg (GnuPG) 2.2.25-unknown; Copyright (C) 2020 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: keybox '/c/Users/28673/.gnupg/pubring.kbx' created
Please select what kind of key you want:	# 请选择您需要的密钥类型,这里默认是RAS那么回车即可
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
  (14) Existing key from card
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072)	# RSA密钥长度,默认3072,直接回车或者输入4096
Requested keysize is 3072 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 0	# 过期时间,0为永不过期,输入0回车
Key does not expire at all
Is this correct? (y/N) y	# 询问选择是否正确,输入Y确认

GnuPG needs to construct a user ID to identify your key.

Real name: CholeTK	# 用户名
Email address: KlyinT@qq.com	# 邮箱,注意这里必须和Github主邮箱一致
Comment:
You selected this USER-ID:
    "CholeTK <KlyinT@qq.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O # 确认没问题后,输入O开始生成密钥

	# ......生成过程已省略

五、列出所有GPG密钥ID

gpg --list-secret-keys --keyid-format LONG
$ gpg --list-secret-keys --keyid-format LONG
/c/Users/28673/.gnupg/pubring.kbx
---------------------------------
sec   rsa3072/C33F486B3B62239E 2021-04-23 [SC]	# 这里rsa为加密类型,3072为长度。C33F486B3B62239E是KeyID
      77A52E479D445325F6D98065C33F486B3B62239E
uid                 [ultimate] CholeTK <KlyinT@qq.com>
ssb   rsa3072/3A9239772EEFD031 2021-04-23 [E]

六、导出公钥

# 方法①控制台输出密钥
gpg --armor --export C33F486B3B62239E
# 方法②导出密钥
gpg -a -o key.txt --export C33F486B3B62239E

将GPG密钥导入Github

Setting ——》SSH and GPG keys ——》 New GPG key

快捷入口:Add new GPG keys (github.com)

将生成的公钥导入

-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGNBGCCbGUBDADFHhTO5XkfoK37zuN3JjffMYMiJrzpc/c1ggNO/WabmK4h2FYN
						…………  中间已省略
oxXUXmU5g5mQWHj9fkotKr2frfT2F4AnWkH0BDnigSI14YiGPJ+BHscZB3VWO1y+
kEZT
=bo6c
-----END PGP PUBLIC KEY BLOCK-----

设置Git

# 让所有项目都启用签名验证
git config --global commit.gpgsign true
# 将密钥ID添加到git设置中
git config --global user.signingkey C33F486B3B62239E
# 提交者信息
git config --global user.email "KlyinT@qq.com"

这样一来,使用git commit命令提交的时,就会用GPG来签名提交,当然也可以在提交的时候使用git commit -S参数来显式启用验证。

最后,当项目提交到Github,我们查看提交详情查看的时,就可以看到一个绿色的Verified标志,表示这次提交已经经过验证,可以确认是作者本人的提交了,为我们代码安全加上防护!

图片[3]-将Github上的提交标记为Verified认证签名-KLYI

© 版权声明
THE END
喜欢就支持以下吧
点赞6
分享
评论 抢沙发

请登录后发表评论