java - 以编程方式签署 JAR

标签 java digital-signature jarsigner

我想用我的代码签署一个 JAR 而没有 keystore - 只使用私有(private)用户的 key (因为我有很多用户和 key )。

我找到了相同的 question ,但它使用 keystore ,我只想使用 PrivateKeyString 来完成。有可能吗?有图书馆吗?

我将尝试阐明任务。例如,我们有一些用户和一些服务。用户创建一些模块,将其打包为 JAR 并使用自己的私钥对其进行签名,该私钥作为 String 本地存储在某些数据库中。

然后他们将其发送给服务,该服务知道该用户的公钥(它也存储在数据库中)。服务会验证此 JAR。

我不想使用 keystore 和别名,因为我必须在每次上传 JAR 时实例化文件。

最佳答案

我使用 pom.xml 签署了 jar 如果它对你有帮助我很高兴:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>ABC</groupId>
    <artifactId>applet</artifactId>
    <version>ABC</version>
    <packaging>jar</packaging>

    <name>applet</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>

            <plugin>
                <groupId>org.aaa.bbb</groupId>
                <artifactId>keytool-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>genkey</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <keystore>./target/chkey</keystore>
                    <alias>ch</alias>
                    <dname>cn=Organization Name, o=Org, l=xyz, st=mm, c=US</dname>
                    <keypass>pass</keypass>
                    <storepass>pass</storepass>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jarsigner-plugin</artifactId>
                <version>1.2</version>
                <executions>
                    <execution>
                        <id>sign</id>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <keystore>./target/chkey</keystore>
                    <alias>ch</alias>
                    <storepass>pass</storepass>
                    <keypass>pass</keypass>
                </configuration>
            </plugin>

        </plugins>
    </build>

    <dependencies>

        <dependency>
            <groupId>java</groupId>
            <artifactId>java-plugin</artifactId>
            <version>jre-1.8</version>
            <scope>provided</scope>
        </dependency>


    </dependencies>
</project>

关于java - 以编程方式签署 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17124628/

相关文章:

java - 记录数据、在命令行中输入数据、限制整数长度

java - 更改 JTable 关键操作的行为

java - Jaxb2marshaller - 使用 contextPath 和classesToBeBound

java - 如何在Java中沿其指向的方向移动 vector 图形

linux - 将私钥存储在数字签名服务器上的什么位置?

java - 签署我的 Jar 文件

javascript - adobe acrobat 中模糊搜索字段

jarsigner "Only one alias can be specified"

java - Jarsigner(MIME 内容类型不是应用程序/时间戳回复)

java - keytool -genkeypair + keytool -list + jarsigner -verify ==>java 1.8 win 10 中的ZipException