gpt4 book ai didi

macos - 如何仅从 NSS 构建 certutil?

转载 作者:行者123 更新时间:2023-12-01 14:07:08 34 4
gpt4 key购买 nike

我正在制作一个小型实用程序,它将在具有自定义 CA 的机器上加载所有 Firefox 配置文件。我已经成功地将 certutil 二进制文件用作 NSS 工具的一部分。

但是,我想知道如何使 certutil 具有可移植性?是否可以仅编译 certutil 或我是否需要构建整个 NSS 工具才能使其工作?

任何关于如何使 certutil 尽可能小和便携的想法将不胜感激。谢谢!

最佳答案

您可以使用自定义 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#Global_installation

一个生产例子: https://addons.mozilla.org/en-US/firefox/addon/cacert-root-certificate/

关于macos - 如何仅从 NSS 构建 certutil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29472305/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com