在尝试自动编译和签署特定的基于 NSIS 的二进制文件时,我遇到了一些奇怪的行为。即,makensis运行 来wine编译可执行文件,然后osslsigncode使用 来对二进制文件进行签名。
可执行文件似乎构建得很好,因为它可以在 Windows 系统上运行,但是签名存在问题(缺乏更好的词)。由于代码签名证书采用 PKCS#12 格式,因此使用的命令如下所示:
osslsigncode sign -pkcs12 <pkcs12-file> -pass <pkcs12-password> \
-n "Your Application" -i http://www.yourwebsite.com/ \
-in yourapp.exe -out yourapp-signed.exe
我从 osslsigncode 收到“成功”消息,就好像签名顺利一样,但是当二进制文件在 Windows 上运行时(本例中为 Win 7),UAC 表示:
出版商:未知
奇怪的是,当我打开从原始.p12文件中提取的证书并查看其信息时,Windows 随后能够识别发布者和数字签名,就好像它以某种方式意识到了证书路径......?
任何意见,将不胜感激。
使用的编辑1
osslsigncode版本:1.5.2和1.7.1
编辑2
为了进行比较,我尝试使用 进行签名SignTool,显然它的工作没有任何问题。所以这看起来像证书+osslsigncode问题,但我不知道它到底是什么。
我还尝试osslsigncode使用另一个证书使用完全相同的 EXE,并且让事情变得更有趣,它起作用了......(我注意到这两个证书的认证路径不同)。
一些证书详细信息:
1)非工作证书
版本:V3
公钥:RSA 2048 位
签名哈希算法:sha1
签名算法:sha1RSA
认证路径:USERTrust -> Comodo Code Signing CA 2 -> …
我有安装 WAMP 的 MySQL 数据库版本 5.1.36。我将它用于 Windows XP SP3 上的开发目的,其中包含一些西里尔文数据,并且所有这些表/列的排序规则都设置为utf8_general_ci.
现在是时候将该数据库移至伪生产环境中,该环境位于 Debian Lenny 上。这里的 MySQL 版本是 5.0.51a。
我尝试了以下方法:
.sql文件保存为UTF8。mysqladmin -u root -p create nbs最后,我尝试创建表并填充数据:
mysql -u root -p --default-character-set=utf8 nbs < NBS_utf8_1.sql
但是,这是我收到错误的地方,例如:
第 1 行的 ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以
`history_members` ( `id`了解在第 1 行的' CREATE TABLE IF NOT EXISTS int(11) NOT NULL AUTO_'附近使用的正确语法
我想有些东西被编码搞砸了……但不知道如何以及在哪里。我想我在 SO 上的类似问题中读到了文本传输的二进制模式只会将换行符 CRLF 更改为 …
我使用ILSpy反编译了一个程序集,特别是一个类引起了我的注意:
public class CustomTextStream : NetworkStream
{
private EventHandler<CustomEventArgs> someEvent;
public event EventHandler<CustomEventArgs> SomePublicEvent
{
add
{
EventHandler<CustomEventArgs> eventHandler = this.someEvent;
EventHandler<CustomEventArgs> eventHandler2;
do
{
eventHandler2 = eventHandler;
EventHandler<CustomEventArgs> value2 =
(EventHandler<CustomEventArgs>)Delegate.Combine(eventHandler2, value);
eventHandler =
Interlocked.CompareExchange<EventHandler<CustomEventArgs>>(
ref this.someEvent, value2, eventHandler2);
}
while (eventHandler != eventHandler2);
}
remove
{
// similar stuff...
}
}
}
Run Code Online (Sandbox Code Playgroud)
在代码中,似乎私有委托用于触发实际事件:
if (something != null && somethingElse != 0)
{
this.someEvent(this, new CustomEventArgs(someArg));
}
Run Code Online (Sandbox Code Playgroud)
问题:假设某些"编译/反编译魔法"没有发生,有人可以猜出这个自定义访问器背后的想法是什么吗?我对IL不是很熟悉,顺便说一下......
(旁注:应用程序是多线程的,显然利用网络.)
我读了一些关于将密钥从PEM转换为DER的已知问题,以便Java可以读取它们,我跑了这篇文章.当跟进时,这工作正常 - 生成的RSA密钥对openssl,密钥加载正常,用公钥加密的内容用私钥成功解码.
现在,这是不清楚的部分.
不久前,我使用Easy-RSA实用程序生成PKI,同时设置OpenVPN服务器.在这里,创建了一个自签名证书.输出文件包括:
server.csr ------ //证书请求
server.key ------ //私钥
server.crt ------- //自签名证书/公钥/无论这是什么..?
Just for the reference, easy-RSA is documented (on the bottom of the page are the scripts explained, and we can see openssl commands actually used in the process).
So, I tried the above logic on these files, using server.key as my private key file, and server.crt as my public key file, both previously transformed to Java-readable DER format:
openssl pkcs8 -topk8 -inform …