Jenkins上调用脚本实现zip文件GPG签名

2 篇文章 0 订阅
2 篇文章 0 订阅

GnuPG是目前最流行、最好用的加密工具之一。
用gpg --help可以查看相关提示和gpg版本信息,本文主要使用了2.0.14和1.4.10两个版本

1. gpg --gen-key
在对文件进行加密前,首先要生成公私钥,gpg --gen-key
中间需要输入用户名等信息,还需要输入一个密码,来保护密钥的使用。这个密码在进行sign签名的时候会用到
gen-key命令执行结果如下:
===============
gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性:  2 已签名:  0 信任度:0-,0q,0n,0m,0f,2u
pub   2048R/9A384DA1 2017-07-12
密钥指纹 = B180 CAEC A20F E1F9 945C  5D00 563D FB0F 9A38 4DA1
uid                  KMProduct (SIQST) <km@quantum-info.com>
sub   2048R/5123DD13 2017-07-12
===============
其中9A384DA1是,是用户ID的Hash字符串,可以代替用户ID使用。

后期可以通过下面的命令查看查询所有生成的公私钥信息:
==========
[root@localhost workspace]# gpg --list-key
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/9A384DA1 2017-07-12
uid                  NAME (comments) <EMAIL@EMAIL.com>
sub   2048R/5123DD13 2017-07-12
==========

2. gpg --sign $fileName
sign命令用于给文件签名,签名时,提示需要输入gen-key时,输入的密码,如图

gpg2.0.14提示如上图,而1.4.10的密码输入提示,是比较传统的,类似于ssh登录的提示信息:“请输入密码”(中文Linux)
需要注意的是,如果有多个用户,最好是指定用户ID,如上面的9A384DA1
gpg -u USERID --sign $fileName
可以指定在哪个密钥进行签名,因为--gen-key可以生产很多密钥

3. expect脚本实现文件签名sign
下面是签名的expect脚本实现,针对gpg2.0.14密码输入提示Passphrase
该脚本在linux上直接运行时可以成功进行签名的, 签名文件成功后的文件与fileName同一个目录,名字后面加gpg, product.zip.gpg
expect-gpg.sh

#!/usr/bin/expect
set timeout 100
fileName=product.zip
cd /home/tmp/
spawn gpg -u 9A384DA1 --sign $fileName
expect "*assphrase"
send "12345678\r"
interact


4.在Jenkins上调用expect.sh
在前面密码交互的地方,总是报错:
can't connect to `/root/.gnupg/S.gpg-agent': 没有那个文件或目录
gpg-agent[12026]: command get_passphrase failed: End of file

在网上查了很多资料,没有找到解决方案,最后想到在gen-key时,不输入密码,直接回车。
虽然给出提示,说不安全,但是公私钥还是产生了,然后用这个用户ID对文件进行签名,就不需要输入密码了,也不需要expect交互脚本了
gpg -u 9A384DA9 --sign $fileName

5.gpg1.4.10版本
1.4.10版本sign的提示输入密码的提示与2.0.14版本不同,
此版本,用Jenkins网页上调用expect脚本,实现gpg --sign可以成功执行

参考资料:
GPG介绍及gen-key命令:
http://www.ruanyifeng.com/blog/2013/07/gpg.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值