2011-07-28 106 views

回答

1

在邮件列表上问了一些问题之后,看起来我并不是这个问题唯一的问题。

在我的情况下,我在我的Mac上使用GPG Keychain Access UI创建了我的密钥对。使用相同工具创建密钥的其他用户也报告了与Maven相同的问题。

无论出于何种原因,当您使用该UI创建密钥对时,它不仅会创建顶级密钥,还会创建一个子密钥。当您使用命令行工具创建新的密钥对时,不会发生这种情况。

所以我去了命令行,撤销了子项,所有的东西都开始工作。

我不确定底层问题是否与GPG KeyChain Access UI创建键的方式一样,或者它是Maven插件读取键的方式。

0

TLDR;您可以通过删除或撤销该子项来控制它。建议撤销。

-

这已经在this sonatype issue进行了讨论,例如。此外,它不仅影响到UI - 我在Windows 7上使用gpg4win创建我的钥匙,和命令行密钥生成生成两个酒吧和子项:

> gpg --gen-key 

> gpg --list-keys 

pub 2048R/xxxxxxxx 2014-12-18 
uid  
sub 2048R/yyyyyyyy 2014-12-18 

评论说,你有两个选择:

你将要删除的子键,然后登录,再部署

..

我吊销了钥匙(没有删除它),并且工作得很好。

该问题的评论说the document已更新有关说明,但链接不再有效。通过使用一些页面缓存我能够挽救的内容,其内容是这样的:

在默认情况下删除的子键

一些PGP工具生成一个子签名密钥,并用它来 签约而不是使用主键。如果您使用 对其进行签名并将工件部署到中央存储库 ,这是个问题,因为Nexus无法从子密钥生成的签名 中获取主密钥ID,因此它无法导入公钥并且将 未能验证神器。修复方法是删除子签名密钥 ,这样PGP将使用主键进行签名。

为了得到一个想法天气,你有一个子签名密钥,运行命令如下 用自己的密钥ID:

$ GPG --edit键A6BAB25C

gpg (GnuPG/MacGPG2) 2.0.17; Copyright (C) 2011 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. 

Secret key is available. 

pub 2048R/A6BAB25C created: 2011-08-31 expires: 2012-06-26 usage: SC 
         trust: ultimate  validity: ultimate 
sub 2048R/DD289F64 created: 2011-08-31 expired: 2011-09-30 usage: E 
sub 2048R/8738EC86 created: 2011-12-19 expires: 2012-06-16 usage: S 
[ultimate] (1). Juven Xu (for testing) <[email protected]> 

由于你可以从上面的例子中看到,这个键有两个子键ID DD289F64和8738EC86。输出还显示创建时间和到期时间。这里重要的是用法:E代表 加密,所以子密钥DD289F64仅用于加密,S代表 用于签名,因此子密钥8738EC86仅用于签名。如果一个主要的 密钥有一个S子密钥,它将使用它进行签名,否则它本身将 做签名工作。所以我们要删除子密钥8738EC86。

首先选择我们要删除的子键,因为它的指数是2 (指数从0开始),我们运行命令:

GPG>键2

pub 2048R/A6BAB25C created: 2011-08-31 expires: 2012-06-26 usage: SC 
         trust: ultimate  validity: ultimate 
sub 2048R/DD289F64 created: 2011-08-31 expired: 2011-09-30 usage: E 
sub* 2048R/8738EC86 created: 2011-12-19 expires: 2012-06-16 usage: S 
[ultimate] (1). Juven Xu (for testing) <[email protected]> 

从输出中可以看到,子键8738EC86标有*。 现在删除它:

GPG> delkey

Do you really want to delete this key? (y/N) y 

pub 2048R/A6BAB25C created: 2011-08-31 expires: 2012-06-26 usage: SC 
         trust: ultimate  validity: ultimate 
sub 2048R/DD289F64 created: 2011-08-31 expired: 2011-09-30 usage: E 
[ultimate] (1). Juven Xu (for testing) <[email protected]> 

提示如果您已经分发你的公钥,最好是 撤销子签名密钥,而不是将其删除,但无论是方式 您可以将您的主键作为签名密钥。请参阅GNU 隐私手册,了解删除和撤销之间的区别。到 撤消一个子密钥,使用gpg> revkey而不是gpg> delkey。

雅! 8738EC86没有列出任何更多,最后一步就是拯救我们的 变化:

GPG>保存

这就是它!现在您可以通过签署文件来测试更改,然后 进行验证。输出应该包含如下内容:

gpg:签名*************************使用***密钥ID [YOUR-主键-ID]

所以,对我的实际步骤

gpg --edit-key PRIMARYKEYID 
key 1 
revkey 
[y] 
[3] 
save 

和重做符号/释放。

相关问题