我試圖建立一個MDM服務器是:從iOS設備解開一個PKCS7有效載荷(MDM入學)
p7sign = OpenSSL::PKCS7::PKCS7.new(req.body)
store = OpenSSL::X509::Store.new
p7sign.verify(nil, store, nil, OpenSSL::PKCS7::NOVERIFY)
signers = p7sign.signers
我有這個很基本的代碼的NodeJS接收&店在POST有效載荷:
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' }
謝謝!
那麼你的最終代碼最終看起來像什麼?我在我的中間件中使用Buffer.concat將req.rawBody作爲二進制緩衝區。我遇到了你之前遇到的同樣的問題。 – smtlaissezfaire