在应用程序签名的上下文中,密钥库和私钥之间有什么区别?
试图用一块石头杀死两只鸟.我不熟悉证书,它们是如何工作的等等.如果我的公司网站有SSL证书,我可以使用它来签署我的程序集并让它们受信任吗?我想不是,但认为值得问.
我们在克服Java webstart的混合代码错误时遇到了困难.总之,我们有我们的主要JNLP文件,我们已经签署了它直接加载的所有代码.我们已将all-permissions选项添加到主JNLP中.它加载的主类也来自一个签名的jar.
当主要类开始时,它会触发一些需要加载从JNLP B中提取的未签名资源的东西.JNLP B的资源都没有签名,也不需要任何特殊权限.
所有已签名的代码都是基于Oracle的混合代码文档设置的,并且jar文件在签名之前已经设置了"Trusted-Library:true"的清单.
当尝试通过签名代码加载未签名的代码时,我们得到一个类未找到错误,如下所示:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: org/some/external/package/that/is/not/signed
at org.our.signed.package.main(Main.java:87)
... 9 more
Caused by: java.lang.ClassNotFoundException: org.some.external.package.that.is.not.signed
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 10 more
Run Code Online (Sandbox Code Playgroud)
以下是JNLP中的情景:
JNLP答:(总结)
<jnlp spec="1.5+" codebase="...." href="......">
<information>
...etc
</information>
<security>
<all-permissions/> …Run Code Online (Sandbox Code Playgroud) 我需要修改文件/data/app夹中现有的 .apk 文件。修改后,Meta-INF文件夹中的签名会发生变化。因此,为了确保 apk 正常工作,我需要使用正确的 md5sum 将它们辞职。
是否可以通过java以编程方式退出apks,仅通过代码生成私钥和证书?
codesign 命令用于创建、检查和显示代码签名,以及查询系统中签名代码的动态状态。
在 Linux 中是否有等效的“代码设计”命令?
我觉得这应该不是那么难,但我会疯狂地试图让它发挥作用.我发现了许多不同的东西要尝试,似乎没有什么工作.
我试图使用.pfx文件签署WPF程序集.如果我尝试使用原始文件,我会收到"找不到用于解密的证书和私钥".
如果我导入密钥并再次导出它,取消选择"如果可能的话,在证书路径中包括所有证书",它似乎可以正常工作.当我去构建时,我得到"错误1无法导入以下密钥文件:my_key.pfx.密钥文件可能受密码保护.要更正此问题,请尝试再次导入证书或手动将证书安装到强名称CSP使用以下密钥容器名称:"
我可以将ClickOnce清单标记为正常,而不是汇编.有关如何使这项工作的任何建议?
我们有一个使用CA(Thawte)证书签名的Java Web Start应用程序.该应用程序分发给数百名客户.他们在服务器上托管它,在客户端计算机上通过互联网或内联网运行.现在它完美无缺.问题是应用程序是在没有时间戳的情况下签名的.证书到期后客户会怎样?他们应该能够启动应用程序吗?如果没有,我们如何帮助他们?将他们的服务器URL添加到例外站点列表是否有帮助?
我们尝试更改本地时间以假装证书过期.然后,由于安全性,应用程序被阻止 将URL添加到例外站点列表没有帮助:
java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Response is unreliable: its validity interval is out-of-date
at com.sun.deploy.security.RevocationChecker.checkOCSP(Unknown Source)
at com.sun.deploy.security.RevocationChecker.check(Unknown Source)
at com.sun.deploy.security.TrustDecider.checkRevocationStatus(Unknown Source)
at com.sun.deploy.security.TrustDecider.getValidationState(Unknown Source)
at com.sun.deploy.security.TrustDecider.validateChain(Unknown Source)
at com.sun.deploy.security.TrustDecider.isAllPermissionGrantedInt(Unknown Source)
at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
at com.sun.javaws.Launcher.prepareResources(Unknown Source)
at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main.access$000(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Suppressed: com.sun.deploy.security.RevocationChecker$StatusUnknownException
at com.sun.deploy.security.RevocationChecker.checkCRLs(Unknown Source) …Run Code Online (Sandbox Code Playgroud) 我有一个具有以下结构的简单应用程序包:
myapp.app/Contents/
myapp.app/Contents/MacOS/myapp
myapp.app/Contents/Resources/empty.lproj
myapp.app/Contents/Info.plist
myapp.app/Contents/PkgInfo
Run Code Online (Sandbox Code Playgroud)
如果我执行
codesign -s "Developer ID" myapp.app/Contents/Info.plist
Run Code Online (Sandbox Code Playgroud)
我可以检查文件是否已签名
codesign -d -v myapp.app/Contents/Info.plist
Run Code Online (Sandbox Code Playgroud)
这给出了以下输出
Executable=/pathToApp/quicknanobrowser.app/Contents/Info.plist
Identifier=Info
Format=generic
CodeDirectory v=20100 size=113 flags=0x0(none) hashes=1+2 location=embedded
Signature size=1278
Signed Time=26 Jan 2016 12:31:24
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=80
Run Code Online (Sandbox Code Playgroud)
文件签名的数据存储在哪里?文件夹结构没有改变(没有新文件),文件的大小没有改变。它是否存储在某些文件系统特定的元数据中?是否可以访问/读取此元数据?
运行 PowerShell 脚本时出现错误:
无法加载文件 test_new.ps1。文件 test_new.ps1 没有数字签名。
我创建了一个 CA 和一个证书,并使用这里描述的过程签署了这个文件。
这是我dir在MY目录上做的时候:
EF76B3D7D8D2406E1F2EE60CC40644B122267F18 CN=PowerShell 用户
我可以看到test_new.ps1文件末尾附加的签名块。
以下是执行政策和范围:
范围执行策略
----- ---------------
MachinePolicy 已签名
用户策略未定义
进程绕过
当前用户全部签名
本地机器未定义
machinepolicy 应优先设置为AllSigned. 一切似乎都很好,为什么我仍然收到数字签名错误。
在 macOS 上,我曾经使用通过 Homebrew 安装的动态库有问题。
但是使用我的最新设置:
我开始遇到以前可以工作的库(例如 protobuf)的代码签名问题。
以下是运行成功构建的项目时的控制台输出:
dyld: Library not loaded: /usr/local/opt/protobuf/lib/libprotobuf.22.dylib
Referenced from: /path/to/myproj/_build/Debug/mam-host
Reason: no suitable image found. Did find:
/usr/local/opt/protobuf/lib/libprotobuf.22.dylib: code signature in (/usr/local/opt/protobuf/lib/libprotobuf.22.dylib) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.
/usr/local/Cellar/protobuf/3.11.1/lib/libprotobuf.22.dylib: code signature in (/usr/local/Cellar/protobuf/3.11.1/lib/libprotobuf.22.dylib) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has …Run Code Online (Sandbox Code Playgroud) code-signing ×10
macos ×3
java ×2
.net ×1
android ×1
c# ×1
certificate ×1
classloader ×1
codesign ×1
homebrew ×1
jnlp ×1
linux ×1
pfx ×1
powershell ×1
sign ×1
ssl ×1
thawte ×1
wpf ×1