maven gpg报错:no default secret key: No secret key signing failed: No secret key

一、问题描述

我这边情况是这样的,原本在A电脑上,通过maven打包安装都是好的,最近新弄了台电脑,然后把A电脑的gpg秘钥通过Kleopatra的方式直接导出来 

然后在B电脑上通过Kleopatra导入,整了很久,在IDEA中执行maven install操作一直报如下错误:

gpg: no default secret key: No secret key
gpg: signing failed: No secret key

二、解决方法

我这边在网上找了很多的解决方法,以及自己遇到的问题,可自行参考操作下,最终通过gpg命令方式导入导出成功解决。

2.1.证书过期

通过如下方式查看:

gpg --list-keys
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
/Users/xxx/.gnupg/xxx.gpg
-----------------------------
pub   2048R/236D3BEFxxxx 2016-12-30 [expired: 2018-12-30]
uid                  xxxx <...@qq.com>

注意上面的expired: 2018-12-30,说明该证书有过期时间,此时需要gpg续订过期的密钥对:

第一步:进入密钥编辑

gpg --edit-key 236D3BEFxxxx

236D3BEFxxxx就是上面pub后面的那串字符串。

第二步:延长私钥与公钥的过期时间,并保存修改

gpg> expire

将要变更主钥的使用期限。
请设定这把密钥的有效期限。
     0 = 密钥永不过期
   <n> = 密钥在 n 天后过期
   <n>w = 密钥在 n 周后过期
   <n>m = 密钥在 n 月后过期
   <n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 0
密钥永远不会过期        
以上正确吗?(y/n)y

................

gpg: WARNING: Your encryption subkey expires soon.
gpg: You may want to change its expiration date too.

gpg> key 1
     
......................

gpg> expire
将要变更子钥的使用期限。
请设定这把密钥的有效期限。
     0 = 密钥永不过期
   <n> = 密钥在 n 天后过期
   <n>w = 密钥在 n 周后过期
   <n>m = 密钥在 n 月后过期
   <n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 0
密钥永远不会过期        
以上正确吗?(y/n)y
            
.....................

gpg> save

此时就已经修改好了。

2.2.将私钥导入新环境,gpg --list-keys命令输出uid [unknown]

我这边后来又参考了网上的另一种方式方式导入导出

A电脑导出
gpg --export-ownertrust > otrust.txt
B电脑导入
gpg --import-ownertrust < otrust.txt

在执行以下命令时

gpg --list-keys

发现A和B电脑UID输出的东西对不上,A电脑上显示的是

uid [ ultimate ] User <xxx@qq.com >

B电脑上却显示的是

uid [ unknown ] User <xxx@qq.com >

解决方法如下:

GNUPG的信任数据库存储在 ~/.gnupg/trustdb.gpg

您可以使用以下--export-ownertrust选项备份此信任数据库

gpg --export-ownertrust > file.txt

如果导出了密钥,以后又将其导入到新环境中,则信任数据库将不再存在。

gpg --edit-key 236D3BEFxxxx

gpg> trust

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

请确定您信任该用户的程度,以正确验证其他用户的密钥
(通过查看护照、检查不同来源的指纹等)

  1 = I don't know or won't say (我不知道或不会说)
  2 = I do NOT trust            (我不相信)
  3 = I trust marginally        (我略微相信)
  4 = I trust fully             (我完全信任)
  5 = I trust ultimately        (我最终相信)
  m = back to the main menu     (返回主菜单)

Your decision? 5

gpg> save

上面两种方式我这边试过后还是不行,一样提示错误。

2.3.通过gpg命令方式导入导出

我这边执行--list-secret-keys命令发现B电脑里面没有输出,而A电脑有输出

gpg --list-keys
gpg --list-secret-keys

最终在网上找到了通过命令的方式导出导出的方式解决了

A电脑导出
gpg --export 236D3BEFxxxx > public.key
gpg --export-secret-key 236D3BEFxxxx > private.key

B电脑导入
gpg --import public.key
gpg --import private.key
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值