签署 Java 桌面应用程序

2024-01-01

我使用 Swing (myProg.jar) 制作了一个 Java 桌面应用程序。目前,我为 Mac 用户将应用程序打包为 .app,并使用 InnoSetup 为 Windows 用户制作 setup.exe 文件。我还提供了 myProg.exe 包装器来启动 myProg.jar。

现在,为了摆脱用户计算机上的 SmartScreen 和其他保护,我认为我需要对我的应用程序进行签名。但我读得越多,就越感到困惑。

谁能为我澄清以下几点?

1)我到底需要什么样的证书?有没有办法让它免费或者至少便宜?

2) 我需要具体签署什么?我应该签署 myProg.jar 文件、.app 文件吗?安装程序.exe? myProg.exe 包装器?他们全部?

3)解决了——当我更新程序并用新版本的 myProg.jar 替换 myProg.jar 时,它将如何工作?

多谢!


你的 JDK 应该包含名为jarsigner。该工具可让您免费签署 jar 文件。

1)用于签名的密钥需要位于java密钥库中(默认.keystore)您可以将密钥导入到您的密钥库中.der format.

2)您只能签名.jar files

3)它只会用新签名的文件覆盖旧文件。就像简单的复制一样。除非您的安装程序这样做,否则不会执行签名验证。

此外,并非每个签名都是相同的。例如,如果您尝试注册加密提供程序,则需要 Oracle 签名的签名才能在 Oracle JVM 上运行它。看:https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html#Step6 https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html#Step6

example:

生成密钥:

keytool -genkey -keyalg RSA -alias key_alias -keystore mystore.keystore -keysize 2048

签署罐子:

jarsigner -keystore mystore.keystore -tsa http://tsa.safecreative.org MyJARFile.jar key_alias_from_keystore

验证签名:

jarsigner -verify jar-file

我不确定这是否能解决我们的问题。总的来说,您需要做的是签署操作系统可执行文件。在这种情况下.exe and .app

一个可能的解决方案是对应用程序包装器的可执行文件进行签名(如果是 Windows.exe)。为此,请参阅:https://msdn.microsoft.com/en-us/library/aa387764.aspx https://msdn.microsoft.com/en-us/library/aa387764.aspx

如果您使用基于 Unix 的系统,我会尝试运行 Mono 的签名工具。请参阅“signcode”上的单声道文档(我无法提供链接,没有足够的代表)

这应该会消除“未知发布者”消息,但除非您能让操作系统开发人员签署您的证书,否则将会向用户显示一些消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

签署 Java 桌面应用程序 的相关文章

  • 使用 Maven 生成 Eclipse 项目文件

    当我尝试使用生成 Eclipse 项目文件时mvn eclipse eclipse我收到以下错误 插件管理器执行目标时出现内部错误 org apache maven plugins maven eclipse plugin 2 9 SNAP
  • Java 字符串哈希码缓存

    字符串不变性的优点之一是哈希码缓存以实现更快的访问 在这种情况下 如何处理具有相同哈希码的字符串的缓存 在这种情况下它真的能提高性能吗 在这种情况下 如何处理具有相同哈希码的字符串的缓存 被缓存的是字符串的哈希码 它被缓存在私有的int字符
  • 如何在Spring Boot中初始化一次MongoClient并使用它的方法?

    您好 我正在尝试导出MongoClient在 Spring Boot 中成功连接后 我尝试在其他文件中使用它 这样我就不必每次需要在 MongoDB 数据库中进行更改时都调用该连接 连接非常简单 但目标是将应用程序连接到我的数据库一次 然后
  • 使用正则表达式验证输入字符串是否为 0-255 之间的数字

    我在将输入字符串与正则表达式匹配时遇到问题 我想验证输入数字在 0 255 之间并且长度最多应为 3 个字符 代码工作正常 但当我输入 000000 至任意长度时 显示 true 而不是 false 这是我的代码 String IP 000
  • 我们可以在不使用 main 方法、静态变量和静态方法的情况下在控制台上打印 java 消息吗?

    public class Test param args 1st way public static void main String args TODO Auto generated method stub System out prin
  • 如何将抽象工厂与单例模式结合起来? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在用 java 编码 并且对这些模式很陌生 谁能给我一个也使用单例的工厂抽象的例子 这是一个实现类的示例单例模式 这个实现也是线程安全
  • EL 通过 Scriptlet

    在 JSP 中使用 EL 相对于 scriptlet 的优势是什么 EL 被认为是无脚本语言 EL 使 JSP 免受容易出错原始 Java 代码并强制您根据 MVC 思想编写 JSP EL 或像 JSTL 这样的标签库 不可能实现的任何事情
  • MediaPlayer.create() 始终返回 null

    我以前用过媒体播放器 从来没有遇到过这个问题 每当我尝试使用 MediaPlayer create 时 该方法都会给我 null 并且我无法播放声音 我有什么遗漏的吗 public class Game extends Activity p
  • EMF Eclipse:带有自定义字段(属性)的枚举

    好吧 在 Java 中这是可能的 import org eclipse emf common util Enumerator public enum MyEnum implements Enumerator LITERAL1 0 Name
  • spring mvc 跟踪引用页面

    在基于注释的弹簧控制器中 如果用户正在url com first page并点击一个链接或提交一份表格指出url com second page 如何制作second page知道url of first page所以这样second pa
  • 如何在Java中打印保留2位小数的浮点数?

    我可以用System out print 您可以使用printf http java sun com j2se 1 5 0 docs api java io PrintStream html printf 28java lang Strin
  • 如何使用 Selenium 中的索引切换到窗口

    由于selenium不提供切换到窗口 多个窗口 的方法 但我想使用index html自定义方法来切换到不同的窗口 但下面的代码没有按预期工作 请建议以下方法的最佳实施 public void switchToWindowIndex int
  • 如何在 JdbcTemplate 中创建 mySQL 存储过程

    背景 为了解决 MySql 中某些语句只允许在存储过程中出现的问题 我尝试在 JdbcTemplate 提交的 sql 中创建 运行然后删除存储过程 一个简单的例子是 这恰好是在 Spring Boot 中 Service public c
  • JFrame Glasspane 也优于 JDialog,但不应该

    我有一个带有 Glasspane 的 JFrame 未装饰 该框架打开一个 JDialog 也未装饰 也有一个 glassPane 并隐藏自身 setVisible false Glasspanes 通过 setGlassPane 设置 对
  • Java 不可变对象 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习不变性的概念 据我了解 一旦创建对象 不可变对象就无法更改其值 但我不明白不可变对象的以下用途 They are 自动是线程
  • Java字符串查找和替换的最佳方法?

    我正在寻找 Java 中字符串查找和替换的最佳方法 这是一句话 我的名字叫米兰 人们都知道我叫米兰瓦西奇 我想用 Milan Vasic 替换 Milan 弦 但在我已经有 Milan Vasic 的地方 情况不应该是这样 搜索 替换后的结
  • Java LRU 缓存使用 LinkedList

    堆栈溢出的新手 所以请不要介意我以菜鸟的方式问这个问题 我正在尝试使用链表实现 LRU 缓存 我在这里看到了使用 linkedHashMap 和其他数据结构的其他实现 但对于这种情况 我正在尝试使用链表创建最佳优化版本 正如我在技术期间被问
  • 更新分页。是否可以?

    他们是否存在一些方法来处理更新分页 例如我有 100 行类型 Id private Integer id Column private boolean flag Column private Date last 一开始它们看起来像 id f
  • ASTParser:解析绑定后查找声明节点

    我创建了一个启用了绑定的 AST 当我稍后解析绑定时 我得到了一个有效的 ITypeBinding 但是 当我想要获取绑定的声明 Node 时 它 总是返回 null 除非 ITypeBinding 在 sourceFile 中声明 这是我
  • Retrofit 2.0:预期为 BEGIN_OBJECT,但在第 1 行第 1 列路径 $ [重复] 处为 STRING

    这个问题在这里已经有答案了 我在邮递员上传递了更新用户请求并获得了成功的响应 参见图片 现在当我尝试使用 Retrofit 2 在我的应用程序中执行相同操作时 出现错误 com google gson JsonSyntaxException

随机推荐

  • 外部混洗:从内存中混洗大量数据

    我正在寻找一种方法来整理内存不适合的大量数据 大约 40GB 我有大约 3000 万个可变长度的条目 存储在一个大文件中 我知道该文件中每个条目的开始和结束位置 我需要对内存中不适合的数据进行洗牌 我想到的唯一解决方案是对包含以下数字的数组
  • 在 bash 脚本中运行 tail -f 特定时间

    我需要一个可以运行一系列的脚本tail f命令并将它们输出到文件中 我需要的是为了tail f运行一定的时间来 grep 特定的单词 之所以是一定时间 是因为其中一些值不会立即显示 因为这是实时日志 我怎样才能运行这样的东西 比如说 20
  • 引用 LSF 作业数组中的作业索引

    我试图将作业数组中作业的索引作为参数传递给另一个 bash 脚本 numSims 3 numTreatments 6 uses numTreatments top rows of parameters csv maxFail 10 j 1
  • 如何获取 apache kafka 中的所有主题?

    RequestMapping value getTopics method RequestMethod GET ResponseBody public Response getAllTopics ZkClient zkClient new
  • 触发点击事件在 IE10 中不起作用[重复]

    这个问题在这里已经有答案了 我需要添加onclick事件到图像 因此当我单击图像时 它将触发文件打开对话框 但在 IE10 下不起作用 button on click function upload trigger click upload
  • 创建适合以下参数的假数据集:N、平均值、标准差、最小值和最大值

    有没有办法创建一个适合以下参数的假数据集 N 平均值 标准差 最小值和最大值 我想创建一个包含 187 个整数比例分数的样本 其平均值为 67 标准差为 17 观察值在 30 210 范围内 我正在尝试演示有关统计功效的概念课程 并且我想创
  • C语言如何跳过文件的前两行?

    我是 C 编程新手 我很困惑如何跳过文件中的前两行 我尝试使用fgets and fscanf 但我不知道该怎么做 假设我有一个文件txt像这样 1 Username Test 2 Password 12345 3 4 那么如何从第 3 行
  • 在 Linux 上用 C++ 移动文件的更快方法

    我正在尝试使用 C 在 Linux 上移动文件 问题是 源文件和目标文件夹可能位于不同的分区 所以我不能简单地移动文件 好的 我决定复制该文件并删除旧文件 bool copyFile string source string destina
  • 非阻塞 tun/tap 文件描述符上的 read() 收到 EAGAIN 错误

    我想从非阻塞 tun tap 文件描述符读取 IP 数据包tunfd我设置了tunfd作为非阻塞并在 libevent 中为其注册 READ EV 事件 当事件触发时 我先读取前20个字节来获取IP头 然后 阅读其余部分 nr bytes
  • MS Access 使用 Group By 进行舍入精度

    为什么员工每个月的平均得分相加后不等于员工 曾经 的平均得分 Average SELECT Avg r score AS rawScore FROM ET INNER JOIN Employee AS e ON ET employeeId
  • 数据注释隐藏属性/字段

    我有一个模型 class Address public int AddressID get set public string Street get set public string City get set public string
  • 从 R 中的分钟数据创建 15 分钟的时间间隔?

    我有一些数据 其格式如下 time count 00 00 17 00 01 62 00 02 41 所以我有从 00 00 到 23 59 的时间 并且每分钟有一个计数器 我想以 15 分钟为间隔对数据进行分组 这样 time count
  • ListTile可以设置边框吗? (扑)

    如何设置边框ListTile小部件 文档中没有它的属性 装饰 所以我不能像往常一样为这个元素应用边框 我也无法包装 ListTile 的属性 例如标题 副标题 前导 尾随在容器中 因为它不起作用 然而 如果没有任何巧妙的方法来设置带有边框的
  • 防止 之后换行

    In span HTML 叙述流中的元素 为了扩展检测到点击的区域 某些跨度仅包含一个字符的内容 我在定义为的类中添加填充 用负边距抵消它 expand click area display inline block padding 5px
  • Python:当已经有一个事件循环正在运行时,从同步方法调用异步代码[重复]

    这个问题在这里已经有答案了 我正在使用 FastAPI 和 uvloop 以有效的方式提供 REST API 我有很多异步代码来调用远程资源 例如数据库 存储等 这些函数如下所示 async def get remote resource
  • 是否可以在 Web 应用程序中运行 cron 作业?

    在java web应用程序 servlets spring mvc 中 使用tomcat 是否可以运行cron作业类型服务 例如每 15 分钟清除一次日志数据库 您能否以独立于容器的方式执行此操作 或者必须使用 tomcat 或其他容器来运
  • 在我的 Rails 项目中使用 MariaDB 而不是 MySQL

    如何在我的 Rails 项目中使用 MariaDB 而不是 MySQL 当我尝试安装 mysql2 gem 时 它返回错误 因为找不到 mysqlclient 这里有一些solution https coderwall com p avjv
  • Javafx PropertyValueFactory 未填充 Tableview

    这让我困惑了一段时间 我似乎无法理解它 我正在使用单元格值工厂填充一个简单的单列表 但它不会填充在表中 确实如此 我单击填充的行 但在其中看不到任何值 在本例中为字符串值 我刚刚编辑了这个以使其更清楚 我有一个不同的项目 它在相同类型的数据
  • 在sqlite中为主数据库设置PRAGMA编码=“UTF-16”

    我读到 在创建数据库后不可能更改数据库的文本编码 任何这样做的尝试都将被默默地忽略 来自here http sqlite org pragma html pragma user version Frome 这个帖子 https stacko
  • 签署 Java 桌面应用程序

    我使用 Swing myProg jar 制作了一个 Java 桌面应用程序 目前 我为 Mac 用户将应用程序打包为 app 并使用 InnoSetup 为 Windows 用户制作 setup exe 文件 我还提供了 myProg e