Как собрать только certutil из NSS?

Я делаю небольшую утилиту, которая будет загружать все профили Firefox на машине с пользовательским центром сертификации. Я успешно использовал двоичный файл certutil как часть NSS Tools.

Тем не менее, мне было интересно, как портативный я могу сделать certutil? Можно ли скомпилировать только certutil или мне нужно собрать все инструменты NSS, чтобы он работал?

Будем весьма благодарны за любые идеи о том, как получить certutil как можно меньшего размера и портативности. Спасибо!

1 ответ

Решение

Вы можете создать дополнение с вашим собственным CA

Пример с надстройкой SDK:

const {Cc, Ci, Cu} = require("chrome");
var {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm");
var self = require("sdk/self");

function installCert(CertName, CertTrust) {
    var gIOService = Cc["@mozilla.org/network/io-service;1"]
                        .getService(Ci.nsIIOService);
    var certDB = Cc["@mozilla.org/security/x509certdb;1"]
                        .getService(Ci.nsIX509CertDB2);
    var scriptableStream = Cc["@mozilla.org/scriptableinputstream;1"]
                        .getService(Ci.nsIScriptableInputStream);
    var scriptableStream = Cc["@mozilla.org/scriptableinputstream;1"]
                                .getService(Ci.nsIScriptableInputStream);
    var channel = gIOService.newChannel(self.data.url(CertName), null, null);
    var input = channel.open();
    scriptableStream.init(input);
    var certfile = scriptableStream.read(input.available());
    scriptableStream.close();
    input.close();
    var beginCert = "-----BEGIN CERTIFICATE-----";
    var endCert = "-----END CERTIFICATE-----";
    certfile = certfile.replace(/[\r\n]/g, "");
    var begin = certfile.indexOf(beginCert);
    var end = certfile.indexOf(endCert);
    var cert = certfile.substring(begin + beginCert.length, end);
    certDB.addCertFromBase64(cert, CertTrust, "");
}
exports.main = function() {
    installCert("custom-ca.crt", "C,c,c");
}

И вы можете развернуть в своей системе все профили с помощью глобальной установки:

http://kb.mozillazine.org/Installing_extensions

Рабочий пример: https://addons.mozilla.org/en-US/firefox/addon/cacert-root-certificate/

Другие вопросы по тегам