Since version 42, Firefox, by default, refuses to install unsigned add-ons. How do I disable this verification?
-
1Welcome back (May 2019) – neverMind9 May 10 '19 at 14:14
7 Answers
It is only possible to disable addons verification in Nightly and Developer channel. In other words it is not possible in Beta versions and standard releases.
- Go to
about:config
(enter it into address bar) - Set
xpinstall.signatures.required
tofalse
.

- 15,090
- 14
- 68
- 96
-
10After Chrome now Firefox is the second browser that will require me to install a developer build for normal browsing or adapt my extensions into TamperMonkey scripts. By the way, is it a sort of cobra effect problem? – Gustavo Rodrigues Aug 13 '15 at 21:08
-
Looks like the option is now available on 'regular' Firefox releases as well (checked on 45.0.1; not sure when it came around, though) – Janaka Bandara Apr 17 '16 at 18:10
-
This seems to no longer work as of FF 47.0b3 (on the beta channel if that makes a difference). – Dalin May 07 '16 at 20:34
-
@Dalin I extended the answer to be more explicit: Nightly and Develepler channels only means not in Beta and release channel. So the fact that it doesn't work in 47.0b3 corresponds with the wiki documentation. – czerny May 25 '16 at 22:53
-
While this will be accurate once Firefox 47 is released, `xpinstall.signatures.required` set to `false` works in the current released version of Firefox, 46.0.1. This answer would be better if it expanded upon what versions are affected in what way. Quite a few people use older versions of Firefox for a significant period of time, particularly ESR releases. It would be quite easy to qualify your statement with the version number of the cut-off, 47. For example adding "As of Firefox 47, to the beginning of the answer and "Prior to Firefox 47 you could:" prior to the instructions. – Makyen May 29 '16 at 00:25
-
@Makyen Firefox 44 blocks non-verified addons, but the setting `xpinstall.signatures.required` can be set to `false` in `about:config`. – Maelkum Aug 01 '16 at 08:59
-
@Mael, yes for FF44 `xpinstall.signatures.required=false` works. It works with FF <=47.0.1. It does not work in FF48.0b10, nor 48.0. My issue with this answer is that through the year it has been up it has been inaccurate. It will, finally, be accurate once FF48 is on the release channel, tomorrow. In spite of getting a lot of rep for this answer, the OP has declined to make it accurate (say that release and beta were possible
– Makyen Aug 01 '16 at 16:24 -
I've been able to patch the XPI mentioned with FF 47.0, adding the following line: if(object.errorMessage.indexOf('SHA-1') == 25) return false; on line 327. But, according to https://wiki.mozilla.org/Add-ons/Extension_Signing, FF 48+ will not accept to disable the user preference quoted to verify / not verify the add-ons signing. For now, I rolled back to FF 47.0 to allow me to work serenely. – Fabien Haddadi Sep 27 '16 at 12:35
-
4To be clear, it is possible to toggle the option `xpinstall.signatures.required` in standard builds of Firefox (at least on 51.01), but it has no effect. Addons will still require a signature. – joelostblom Feb 10 '17 at 12:53
-
-
-
A bit confusing that in addition to running the developer version of firefox and setting this flag, I had to set an applications.gecko.id. – Markus Barthlen May 10 '21 at 04:08
Disable add-on signing check in Release (all) versions of Firefox
Firefox version 65+ (or so)
The following instructions will disable signature checking on Firefox for the Firefox profile in which you install the files. You are going to be adding some files to the chrome directory under your Firefox Profile directory.
This code will not work if javascript.enabled
is set to False
in about:config
. That option needs to be set to True
, which is the default setting.
As of Firefox 69+, it is expected that, in addition to the instructions below, you will need to have toolkit.legacyUserProfileCustomizations.stylesheets
set to true
in about:config
. If it does not exist, then you will need to create it ("new" in the right-click context menu) as a Boolean option. See Bugzilla 1541233 for more detail about the addition of this option.
I've tested this on Firefox 66.0.3+.
The process of upgrading versions appears to briefly run the browser code with these changes not active. Thus, the first time you run a new version of Firefox any extensions you have installed that rely on disabling add-on signing will be disabled. You can immediately re-install those extensions after the upgrade to a new Firefox version and the extensions should resume working.
IIRC, some slightly different code was needed for Firefox 65, I believe I left that code in disable-add-on-signing.js when I modified it for Firefox 66, but I'm not sure about that.
We're going to use a technique which allows you to run arbitrary JavaScript code in the browser context from files stored in your Firefox profile directory. I found how to do this from Haggai Nuchi's GitHub repository: Firefox Quantum compatible userChrome.js.
On Windows, your Firefox profile directory will be %appdata%\Mozilla\Firefox\Profiles\[profileID]
. If you have only one profile, the [profileID]
will be the only directory in the %appdata%\Mozilla\Firefox\Profiles
directory. If you have multiple profiles, you will need to select the one(s) you want to install this hack into.
Once you get to your profile directory, your will need to create a directory called chrome
, if it does not already exist. You will be adding the 3 files below to that directory:
userChrome.css
userChrome.xml
disable-add-on-signing.js
You will then need the following code in userChrome.css
, which is available from Haggai Nuchi's GitHub repository:
/*Enable userChrome.js */ /* Copyright (c) 2017 Haggai Nuchi Available for use under the MIT License: https://opensource.org/licenses/MIT */ @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); toolbarbutton#alltabs-button { -moz-binding: url("userChrome.xml#js"); }
You will need userChrome.xml
(slightly modified from the version available in Haggai Nuchi's GitHub repository):
<?xml version="1.0"?>
<!-- Copyright (c) 2017 Haggai Nuchi
Available for use under the MIT License:
https://opensource.org/licenses/MIT
-->
<!-- This has been slightly modified from the version available from
https://github.com/nuchi/firefox-quantum-userchromejs/blob/master/userChrome.xml
by Makyen. The modified version is released under both the MIT and CC BY-SA 3.0 licenses.
-->
<bindings id="generalBindings"
xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="js" extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton-badged">
<implementation>
<constructor><![CDATA[
function makeRelativePathURI(name) {
let absolutePath = Components.stack.filename;
return absolutePath.substring(0, absolutePath.lastIndexOf("/") + 1) + name;
}
// The following code executes in the browser context,
// i.e. chrome://browser/content/browser.xul
try {
Services.scriptloader.loadSubScript(makeRelativePathURI("disable-add-on-signing.js"), window);
} catch(e) {
console.error(e);
}
]]></constructor>
</implementation>
</binding>
</bindings>
You will also need disable-add-on-signing.js
:
//This should be installed as the file disable-add-on-signing.js in
// your profile's "chrome" directory.
//Earlier versions of Firefox
try {
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {}).eval("SIGNED_TYPES.clear()");
} catch(ex) {}
try {
Components.utils.import("resource://gre/modules/addons/XPIInstall.jsm", {}).eval("SIGNED_TYPES.clear()");
} catch(ex) {}
try {
Components.utils.import("resource://gre/modules/addons/XPIDatabase.jsm", {}).eval("SIGNED_TYPES.clear()");
} catch(ex) {}
//Tested on Firefox 66
const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyModuleGetters(this, {
XPIDatabase: "resource://gre/modules/addons/XPIDatabase.jsm",
});
XPIDatabase.SIGNED_TYPES.clear();
console.log('Add-on signing disabled.');
After adding these files in your profile's chrome directory, you will need to restart Firefox. You can verify that the code is running by looking for "Add-on signing disabled." in the Browser Console.
Add-ons which were disabled or removed by Firefox will not be automatically enabled. You will need to re-install them. You can install them by draging-and-droping the *.xpi file onto a Firefox window and confirming that you want to install.
If you are wanting to get the *.xpi file for any particular extension from Mozilla Add-ons you can download it by right clicking on the "install" button and selecting "Save As", or "Remove".
Firefox version 57 or earlier (or so)
Unfortunately, I don't recall with which version of Firefox this this method stopped working. I know I was using it on Firefox 54, 55, 52ESR and FF56.*.
I initially found this solution for disabling forced add-on signature checking in this blog post, which is the original source for the (somewhat modified) code in this answer. Making these changes will allow you to install unsigned add-ons into profiles using the Firefox distribution you modify. For most people, this will be your main Firefox installation. However, if you have installed multiple versions, you will need to make this modification in each installation. However, once you make the modifications, they will remain through normal Firefox updates.
You will need to add a couple of files within the Firefox installation directory. You can find a list of installation directory examples for Windows, Linux, and Mac OS on mozillaZine. The most common install directories are:
- Windows
- C:\Program Files\Mozilla Firefox\
- C:\Program Files (x86)\Mozilla Firefox\
- Linux
- /usr/lib/firefox-<version>
- OSX
- /Applications/Firefox.app
Add first file
You then need to add code below as the file <Install directory>/defaults/pref/disable-add-on-signing-prefs.js
(Windows: <Install directory>\defaults\pref\disable-add-on-signing-prefs.js
):
//This file should be placed in the defaults/pref directory (folder)
//within the Firefox installation directory with the with the name:
// disable-add-on-signing-prefs.js
pref("general.config.obscure_value", 0);
pref("general.config.filename", "disable-add-on-signing.js");
Add second file
You also need to add the code below as the file <Install directory>/disable-add-on-signing.js
(Windows: <Install directory>\disable-add-on-signing.js
):1
//This file should be placed in the Firefox installation directory
//(folder) with the with the name:
// disable-add-on-signing.js
try {
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("SIGNED_TYPES.clear()");
} catch(ex) {}
try {
Components.utils.import("resource://gre/modules/addons/XPIInstall.jsm", {})
.eval("SIGNED_TYPES.clear()");
} catch(ex) {}
Results
I've been using these solutions for years now to have a few extensions I built for my own use installed and to test new versions of extensions I'm working on (when I want to test in the Release version instead of Firefox Developer Edition or Nightly).
NOTE: In about:addons
Firefox may show (under some conditions) the add-on as enabled (not greyed-out), but have text stating that the add-on "could not be verified and has been disabled". The text is not accurate! The add-on is enabled and functioning.
How it works
Within resource://gre/modules/addons/XPIProvider.jsm
the const SIGNED_TYPES
is defined as a Set
. In order for an add-on to require signing, its type must be a member of that Set
. The Set.prototype.clear()
method is used to clear all entries from the Set
. This results in no add-on types which require signing (code 1, code 2).
If you wanted to, you could individually disable the signature check for any of the types: "webextension"
, "extension"
, "experiment"
, or "apiextension"
.
Remove the META-INF directory from any modified extension
The additional files in the sections above turn off the requirement that extensions must be signed. If the signature files exist, the signature will still be verified. Thus, if you have modified an extension from one that was singed and have not removed the signature files, the extension will fail signature verification. In other words, actually checking any existing signatures is a separate step from the requirement that the signature must exist.
If you have modified an extension which had been signed (you can tell that it had been signed by the existence of a META-INF directory in the extension's root directory), then you will need to remove the signature files. You can do this by removing the META-INF directory and all files contained in that directory.
1. The code in the blog puts this call in a try{}catch(){}
block. There's really no need to do so. The only effective thing that doing so does is prevent any error from being reported in the Browser Console (Ctrl-Shift-J, or Cmd-Shift-J on OSX). There's no additional code that is desired to be run if this fails. In addition, I would prefer to be able to see the error in the Browser Console if this fails in order to know that it has, in fact, failed. Not having the try{}catch(){}
doesn't have any negative effects and permits tracking down the problem if, on some future version of Firefox, add-ons start being disabled because of not being signed.

- 31,849
- 12
- 86
- 121
-
I tested this on FF 52.1.1 (64-bit) for Windows and it works. Important note: if the extension contains a META-INF directory and 'the files in that directory are incorrect' (i.e. because other files in the extension have changed since the extension was signed,) you must rename/remove that directory. If you don't, the extension will appear active and FF won't warn about an unverified extension - but the extension will not work. I don't know exactly what 'the files in that directory are incorrect' entails. Perhaps someone who knows more about this can edit the answer and add these details. – WalterGR May 17 '17 at 17:41
-
@WalterGR, I've updated this answer to include the need to remove the *META-INF* directory, and its contents, from modified extensions. As I've mentioned in the added text, the actual check of the signature is a separate step from passing the requirement that the signature exists. The warning that "files are incorrect" is when the one or more files in the extension don't match the checksum which is stored, and cryptographically signed, in the files contained in the *META-INF* directory. – Makyen May 17 '17 at 18:28
-
Makyen - terribly sorry, but after further testing, my comment appears to be incorrect. I have modified an extension and left the META-INF directory in place, and it does indeed work. Apologies. – WalterGR May 17 '17 at 18:51
-
Doing this is quite dangerous. It will allow you to install an extension without signature *without warning* you about it. – ysdx Aug 09 '17 at 13:56
-
@ysdx, You still have to go through the same confirmation process as for a normal install. How "dangerous" permitting installation of unsigned add-on is depends on your definitions of "quite" and "dangerous", how conscious you are of security issues (i.e. your habits for installing obviously untrustworthy code) and how much personal responsibility you take for your own actions. Mozilla signing all add-ons listed on AMO and requiring signature checking was an effort to protect unthinking users from their own risky actions of installing extensions from anywhere, without thinking about(continued) – Makyen Aug 09 '17 at 14:20
-
@ysdx, the potential consequences. Personally, I don't feel I need a nanny to *force* this protection upon me. I *choose* to use Firefox and install only add-ons listed on AMO, ones I've written myself, or ones for which I have personally reviewed the source code. I choose to use Firefox because, unlike Chrome, every single add-on on AMO has been reviewed by a human for security, privacy, etc. issues. For me, because I take responsibility and never install an add-on from a source I don't trust, making this modification presents minimal additional security danger, but does make my life easier. – Makyen Aug 09 '17 at 14:20
-
@Makyen: I do agree with. It's not a good news that Firefox is turning into yet another walled-garden. It should be possible to be able to install unsigned packages in Firefox. However, this solution is not ideal because the side effect is that you do not see whether the addon you are going to install is signed or not and people should be aware of that before they use it. – ysdx Aug 09 '17 at 19:02
-
This worked up until recently but then suddenly it stopped working when the install just hangs on the last part saying "verifying" no errors or anything, just won't proceed, did something change? I am on Fx 56.0.2 and worked fine for the longest time but suddenly no longer. I haven't changed anything on my end. – GµårÐïåñ Mar 16 '18 at 17:49
-
@GµårÐïåñ I used it on FF56.0.2. I haven't run FF56 in a while (I moved to FF52ESR). There were some changes needed at one point, for newer versions of FF, but that was for FF55. Just in case, please be sure you have the version of this code which is currently displayed in this answer. Other than that, I'm not aware of any changes which would have been made without you updating Firefox. – Makyen Mar 16 '18 at 18:02
-
@Makyen Thank you, that's is the first thing I did and they are identical for 1 difference, I have a try/catch wrapper. Removing them and just making them barebone like you have it don't seem to change behavior. Any thoughts where I should look for potential issue? – GµårÐïåñ Mar 16 '18 at 19:12
-
@GµårÐïåñ Unfortunately, I haven't seen that problem and I'm not able to duplicate it. Without considerably more information, which is sufficient to be able to duplicate the issue (i.e. enough to make a new Question), I'm probably not going to be able to help. As to diagnosing it, the first thing I'd do is look in the Browser Console. See [this answer of mine](//stackoverflow.com/a/38920982/3773011) which briefly describes the various Firefox consoles. The Browser Console includes error information internal to Firefox, but it usually contains considerably more than what one is looking for. – Makyen Mar 16 '18 at 19:34
-
@Makyen Understood, sorry to bother you, just thought you might have already experienced it or seen it and keeping it together with your answer would be helpful. I have looked at the consoles, I am familiar with them but they show nothing that would be helpful relating to this, that's another thing and it throws no error or anything that would give a clue either, which is the frustrating part, I have even modified the code to force it to give status, but still nothing is displayed, which suggest no issue but then why wouldn't work, you see what I mean? Catch 22. Anyway, thanks for the help. – GµårÐïåñ Mar 16 '18 at 20:04
-
1when I put the files in corresponding directories firefox crashs at startup with message "failed to read configuration file", tested on firefox 59.0.1 – niceman Mar 21 '18 at 13:50
-
This is crashing firefox 54.0 with message "failed to read configuration file.", if I remove `Components.utils.import("resource://gre/modules/addons/XPIInstall.jsm", {})` from `disable-add-on-signing.js`, it loads but signature checking is still enabled – AaA Jan 21 '19 at 02:30
-
1@AaA Firefox 54.0 is *very* old now. I know that I've used it in FF54, FF 55, FF52ESR and FF56.*. As such, I'm a bit surprised that there's an issue. I do note that I added the `XPIInstall.jsm` line in `disable-add-on-signing.js` for FF55 compatibility. Thus, removing that line may be needed. I don't recall if I tested it again on FF54 after making that change. Note that sometimes the add-ons page appears to indicate that it did not work when it actually did and you need to re-install add-ons that were previously disabled. – Makyen Jan 21 '19 at 02:43
-
@Makyen, I tried the script again and it is working after removing second line. You are right. addon screen wasn't updating even after restarting firefox, had to remove addon and reinstall to make it work. – AaA Jan 21 '19 at 02:50
-
FYI, this only works if `javascript.enabled` is not set to `False` in `about:config`. When Mozilla killed all add-ons on 04 May 2019 I had temporarily disabled Javascript to prevent unpleasant, normally-blocked content from loading -- then found doing so prevented this fix from working also. – dbc May 04 '19 at 22:57
-
1@dbc Interesting. Thanks. That's good to know. I would not have expected that config option to disable running JavaScript loaded in this manner. I would have expected that option to only apply to JavaScript loaded from webpages, rather than through references in the browser context. However, having tested it, it's definitely disabled when `javascript.enabled` is set to `false`. – Makyen May 04 '19 at 23:20
-
1I tried the solution for Firefox version 56. It works perfectly. It works for portable version as well. – SJ9 May 05 '19 at 21:23
-
Needing to re-install add-ons is not so great. ''Add on Verification'' is an euphemism for remote control by Mozilla. – neverMind9 May 10 '19 at 14:19
-
@Makyen There's a new user trying to get your attention, here: https://stackoverflow.com/questions/58463281/disabling-add-on-signing-check-in-firefox-doesnt-work-on-69-0-3 – Adrian Mole Oct 19 '19 at 12:20
-
I tried it in Firefox Nightly 65 but did not worked, firefox says extension could not be installed because it's not verified. I removed META-INF folder from it. – hldev Sep 25 '21 at 22:57
To complete the above answer, i discover firefox-autoconfig, that consists of installing an autoconfig.js
file in <FIREFOX INSTALLATION DIR>/default/prefs
and a ci.clg
file in <FIREFOX INSTALLATION DIR>
that's a way to disable xpinstall.signatures.required
(and other options too) definitively and automatically when Firefox is opened (tested with Firefox 45.0.1)
You will see those contents in autoconfig.js
:
//
pref("general.config.filename", "ci.cfg");
pref("general.config.obscure_value", 0);
And those contents in ci.cfg
:
// Disable checking if firefox is default browser
lockPref('browser.shell.checkDefaultBrowser', false);
// Disable restoring session
lockPref('browser.sessionstore.resume_from_crash', false);
// Disable extension signature check
lockPref('xpinstall.signatures.required', false);
// Allow extensions to be installed without user prompt
pref("extensions.autoDisableScopes", 0);
pref("extensions.enabledScopes", 15);
// Disable updater
lockPref("app.update.enabled", false);
// make absolutely sure it is really off
lockPref("app.update.auto", false);
lockPref("app.update.mode", 0);
lockPref("app.update.service.enabled", false);
// Prevent closing dialogs
lockPref("browser.showQuitWarning", false);
lockPref("browser.warnOnQuit", false);
lockPref("browser.tabs.warnOnClose", false);
lockPref("browser.tabs.warnOnCloseOtherTabs", false);
// Disable Add-ons compatibility checking
clearPref("extensions.lastAppVersion");
// Don't show 'know your rights' on first run
pref("browser.rights.3.shown", true);
//Disable plugin checking
lockPref("plugins.hide_infobar_for_outdated_plugin", true);
clearPref("plugins.update.url");
// Disable health reporter
lockPref("datareporting.healthreport.service.enabled", false);
// Disable all data upload (Telemetry and FHR)
lockPref("datareporting.policy.dataSubmissionEnabled", false);
// Disable crash reporter
lockPref("toolkit.crashreporter.enabled", false);
Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false;
// Browser Console command line
pref("devtools.chrome.enabled", true);

- 436
- 4
- 15
As of Firefox 47: release and Beta versions of Firefox for Desktop will not allow unsigned extensions to be installed, with no override.
For more info see the Mozilla Wiki page on Extension Signing.

- 3,012
- 1
- 21
- 21
@Makyen's solution works but will disable signature checking completely:
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("SIGNED_TYPES.clear()");
You will not have the information of whether the addon is signed.
Instead I'd suggest this:
/* Let unsigned addons live! */
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("function mustSign(aType) { return false; }");
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("XPIProvider.verifySignatures = function() {}");
It will still warn you when you try to install an unsigned addon but it will work anyway. The addon is flagged as disabled in about:addons
but is in fact active (you can disable/enable it manually like a normal addon).
How it works:
mustSign()
checks whether signature is required for this type of addon.verifySignatures()
is a callback used to check signatures everyXPI_SIGNATURE_CHECK_PERIOD
seconds (i.e. once per day)

- 8,889
- 1
- 38
- 51
This is the code which I found in the thread on HackerNews regarding add-on signing apocalypse. It works in Firefox 56 and older versions without restarting.
// For FF < v57 >...?
async function set_addons_as_signed() {
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm");
Components.utils.import("resource://gre/modules/AddonManager.jsm");
let XPIDatabase = this.XPIInternal.XPIDatabase;
let addons = await XPIDatabase.getAddonList(a => true);
for (let addon of addons) {
// The add-on might have vanished, we'll catch that on the next startup
if (!addon._sourceBundle.exists())
continue;
if( addon.signedState != AddonManager.SIGNEDSTATE_UNKNOWN )
continue;
addon.signedState = AddonManager.SIGNEDSTATE_NOT_REQUIRED;
AddonManagerPrivate.callAddonListeners("onPropertyChanged",
addon.wrapper,
["signedState"]);
await XPIProvider.updateAddonDisabledState(addon);
}
XPIDatabase.saveChanges();
}
set_addons_as_signed();
This code needs to be executed in the browser console (not web console) which can be accessed via the shortcut Ctrl+Shift+J. It instantly reenables all addons which failed verification.

- 33,702
- 16
- 105
- 146
-
Note: using [`async`](//developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function#Browser_compatibility) / [`await`](//developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await#Browser_compatibility) makes this Firefox 52+. In addition, having command line entry in the [Browser Console](//developer.mozilla.org/en/docs/Tools/Browser_Console) is behind an `about:config` preference (`devtools.chrome.enabled` must be `true`) or "Enable browser chrome and add-on debugging toolboxes" option in developer tool settings (FF40+). – Makyen May 05 '19 at 09:29
-
Worked for me with Firefox 55.0.3. It would be worth mentioning whether the change is persistent or whether addons will be disabled again on the next daily signature check, or on next time Firefox is started, or something. – Maëlan May 05 '19 at 11:40
-
@Maëlan I'm using this method myself. So far the addons seem to work, so hard to judge. I suspect it isn't persistent. – Athari May 05 '19 at 13:23
-
My addons just got disabled again, even though I haven’t restarted Firefox since the last time it happened, so I confirm that the effect of this fix is temporary. I simply re-ran this code, so this is nothing to worry about, provided that Mozilla fixes the expired certificate soon. Otherwise, well… – Maëlan May 08 '19 at 19:51
A simpler approach I discovered that seems to work is flipping the constant that Firefox uses to determine whether to enforce signing. This will likely need to be done after each Firefox update.
- Locate the
omni.ja
archive in your Firefox install directory - Extract this file as a zip archive to a working folder
- Edit
modules/AppConstants.jsm
in your text editor, and change the value underMOZ_REQUIRE_SIGNING
fromtrue
tofalse
- Re-zip the modified contents back into
omni.ja
- Verify that
xpinstall.signatures.required
andxpinstall.whitelist.required
are false underabout:config
, and restart firefox
Your unsigned addons should now install.
-
-
Firefox does not crash if you unpack/repack the omni.ja file correctly. No guarantees if you try to just edit/replace files as if it were a normal zip. The Firefox 80-series of releases was current when this answer was posted. – xperia64 Sep 27 '21 at 03:21
-
1https://web.archive.org/web/20210531175757/https://developer.mozilla.org/en-US/docs/Mozilla/About_omni.ja_(formerly_omni.jar) says: "The correct command to pack omni.ja is: zip -0DXqr omni.ja *". But you can change that 0 to 9 to enable actual compression. – biziclop Apr 07 '22 at 21:18
-
Your answer helped me. The archive `C:\Program Files\Mozilla Firefox\omni.ja` is not compressed, so you can skip repacking. Just edit it in a hex-editor like https://chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm ,find the first occurence of the string `MOZ_REQUIRE_SIGNING: true` and overwrite it to `MOZ_REQUIRE_SIGNING: false`. (preserve the filesize) Then restart your browser from command line to apply changes. `"C:\Program Files\Mozilla Firefox\firefox.exe" --purgecaches` https://superuser.com/a/1536420/1194827 Now you can (re)install (drag and drop) your unsigned .xpi addons. – Stano Sep 01 '23 at 07:03