1

Appleによるルビーコードが次の場合、MDMサーバーを構築しようとしています:

p7sign = OpenSSL::PKCS7::PKCS7.new(req.body)
store = OpenSSL::X509::Store.new
p7sign.verify(nil, store, nil, OpenSSL::PKCS7::NOVERIFY)
signers = p7sign.signers

POST ペイロードを受信して​​保存するための非常に基本的な NodeJS コードがあります。

exports.profile = function(req, res) {
    var queryData = "";
    req.on('data', function(chunk) {
        queryData += chunk;
    });
    req.on('end', function() {
        fs.writeFileSync('out.p7s', queryData);
    });
    res.send('1');
};

ただし、指定されたファイル: https://dl.dropbox.com/u/2310128/ios-mdm.p7s

まったくopensslに認識されないようです!!

openssl pkcs7 -in req.p7s -inform DER -print_certs

戻ります:

unable to load PKCS7 object
140735186985436:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:150:

ここで何がうまくいかないのでしょうか?削除する必要がある余分なパディングはありますか? 指定されたファイルは PKCS7 ではありませんか?

リクエストヘッダー:

{ host: '192.168.22.39:3000',
  'accept-encoding': 'gzip, deflate',
  'content-type': 'application/pkcs7-signature',
  'accept-language': 'fr-fr',
  cookie: 'connect.sid=s%3Andcjz5pGCdb1AYXhNG8Us5mh.5szK2X1cOpnih9X5kCbqTUdpv8EyJRwNHl4VC6M5Gwk',
  accept: '*/*',
  'content-length': '3564',
  connection: 'keep-alive',
  'user-agent': 'Profile/1.0' }

ありがとう!!

4

2 に答える 2

0

Buffer.concatバイナリバッファを正しく追加して機能させるために使用する必要がありました。

于 2012-10-26T23:16:51.033 に答える
0

共有したファイルには行末文字がありません。私は NodeJS の専門家ではありませんが、ファイルをバイナリ ファイルとして保存していないようです。次の変更を加えて、これが機能するかどうかを確認できますか?

req.on('end', function() {
    fs.writeFileSync('out.p7s', queryData, 'binary');
});
于 2012-10-19T21:02:10.977 に答える