小编Les*_*ess的帖子

使用 osslsigncode 进行代码签名 - 发行商未知

在尝试自动编译和签署特定的基于 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 -> …

openssl nsis code-signing signtool

3
推荐指数
1
解决办法
2669
查看次数

MySQL UTF8 Windows 导出 - Linux 导入

我有安装 WAMP 的 MySQL 数据库版本 5.1.36。我将它用于 Windows XP SP3 上的开发目的,其中包含一些西里尔文数据,并且所有这些表/列的排序规则都设置为utf8_general_ci.

现在是时候将该数据库移至伪生产环境中,该环境位于 Debian Lenny 上。这里的 MySQL 版本是 5.0.51a。

我尝试了以下方法:

  1. 我使用Windows 上的phpmyadmin 中的数据导出了数据库,并将.sql文件保存为UTF8。
  2. 然后,我通过 WinSCP(带有默认和二进制传输设置)将它传输到 Linux 机器。
  3. 我通过命令行创建了数据库: mysqladmin -u root -p create nbs
  4. 最后,我尝试创建表并填充数据:

    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 更改为 …

mysql linux windows utf-8

2
推荐指数
1
解决办法
2658
查看次数

反编译程序集 - 不寻常的代码

我使用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不是很熟悉,顺便说一下......

(旁注:应用程序是多线程的,显然利用网络.)

.net c# events decompiling ilspy

2
推荐指数
1
解决办法
695
查看次数

针对Java的RSA密钥转换 - 需要澄清吗?

我读了一些关于将密钥从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 …

java encryption openssl rsa public-key-encryption

2
推荐指数
1
解决办法
2740
查看次数