blz*_*lzn 2 javascript cryptography node.js der
我正在使用crypto模块来验证证书,但是我的证书和公共密钥都是DER格式。似乎该crypto模块不接受此格式。
有没有一种方法(或模块)使用NodeJS将DER转换为PEM格式?我找不到任何内容,也无法使用命令行通过shell 调用openssl。
更新:这与HTTPS证书无关。它是关于常规X.509证书的。如果您将问题标记为否定,请发表评论以证明其合理性。如果您无能为力,那就不要傻了。
我认为PEM格式只是DER二进制数据,它已被base64编码,分成64个字符行,并包装在'----- BEGIN CERTIFICATE -----'和'----- END CERTIFICATE- ----'。
因此,您可以这样做:
var prefix = '-----BEGIN CERTIFICATE-----\n';
var postfix = '-----END CERTIFICATE-----';
var pemText = prefix + derBuffer.toString('base64').match(/.{0,64}/g).join('\n') + postfix;
Run Code Online (Sandbox Code Playgroud)
您无需在后缀之前加上“ \ n”,因为der缓冲区的最后一个匹配项应该是一个空字符串”,因此在末尾将有一个“ \ n” derBuffer.toString('base64').match(/.{0,64}/g).join('\n')
Dominykas 的回答很好,但就我而言,我有一个使用ECC 的证书,但node-forge不支持它。所以我找到了一个名为 的模块node-openssl-wrapper,它工作得非常好,因为它将 openssl 命令封装在一个简单的函数调用中,如下所示:
co(function*() {
var ossl = require('openssl-wrapper');
var derCert = new Buffer('...'); // binary DER certificate
var pemCert = yield ossl.qExec('x509', derCert, { inform: 'der', outform: 'pem' });
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4449 次 |
| 最近记录: |