Java 为什么要签署一个项目';使用Maven GPG插件使用GnuPG创建工件?

Java 为什么要签署一个项目';使用Maven GPG插件使用GnuPG创建工件?,java,maven,gnupg,Java,Maven,Gnupg,我有两个问题要问 首先,我需要知道用“GnuPG”签署java项目工件的重要性 我目前的情况是,我正在考虑发布我的第一个公共java项目。我正在使用Maven构建和管理这个项目,并且遇到了“Maven GPG插件”。关于插件的文档非常模糊,没有描述为什么要用“GnuPG”来签署工件。我没有使用GnuPG/Maven-GPG的经验,所以我想知道使用这个Maven插件有什么好处 我的第二个问题是如何在Eclipse中的java项目上使用这个插件 在我构建项目时,是否只需将以下内容添加到我的pom.x

我有两个问题要问

首先,我需要知道用“GnuPG”签署java项目工件的重要性

我目前的情况是,我正在考虑发布我的第一个公共java项目。我正在使用Maven构建和管理这个项目,并且遇到了“Maven GPG插件”。关于插件的文档非常模糊,没有描述为什么要用“GnuPG”来签署工件。我没有使用GnuPG/Maven-GPG的经验,所以我想知道使用这个Maven插件有什么好处

我的第二个问题是如何在Eclipse中的java项目上使用这个插件

在我构建项目时,是否只需将以下内容添加到我的
pom.xml
中,为我签名

<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-gpg-plugin</artifactId>
    <executions>
      <execution>
        <id>sign-artifacts</id>
        <phase>verify</phase>
        <goals>
          <goal>sign</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>
</build>

org.apache.maven.plugins
maven gpg插件
符号伪影
验证
签名
如果没有,我将如何在Eclipse中正确地与maven签署项目


谢谢大家!

我没有在Maven中实际使用GnuPG的经验(我从未发布过Maven插件),因此我将把我的答案限制在您问题的第一部分

关于插件的文档非常模糊,没有描述为什么要用“GnuPG”对工件进行签名。我没有使用GnuPG/Maven-GPG的经验,所以我想知道使用这个Maven插件有什么好处

简单的散列和,只能用于实现意外传输问题,如位翻转。与这些不同,GnuPG发布加密签名,加密签名也能够识别传输问题,但还允许您验证签名数据的作者

如果没有加密签名,就无法知道您正在下载和执行的代码/程序是否是您期望的代码/程序。一次又一次地丢失或未经验证的加密签名会导致最近通过后门下载


加密签名并不意味着代码是正确的,没有(安全)问题,但至少知道您拥有作者发布的相同代码,这大大减少了后门的机会。

谢谢。你知道吗,像我这样的新手,可以在任何地方学习创建需要签名的项目的“在线存储库”?我已经找到了关于如何生成我的gpg密钥并将其添加到公共服务器的信息,但是如何将我的项目上传到存储库?(这两个可能没有任何共同点,但我已经看到“maven central repositories”或w/e需要项目的gpg密钥);就不能有人偷了我项目的钥匙吗?它是如何安全的?我无法找到任何信息,无论我谷歌如何实际工作,并确保我的项目。此外,黑客是否需要我上传项目所需的信息,以便为我的项目创建“后门”,或者如果有人重新上传我的作品并假装我要上传,是否可以创建“后门”?如果你能告诉/引导/链接我这些信息,我将不胜感激。我找了一整天,运气不好。谢谢阅读有关公钥/私钥加密的内容,了解为什么只需要发布公钥,就可以(而且必须!)保守私钥秘密。攻击者仍然需要找到一种方法来分发后门版本,但这可能是由于泄露的凭据、服务器上的安全问题。。。