В основном ваша подпись должна включать в себя полную цепочку сертификатов до доверенного корня VeriSign сертификат в обход «VeriSign Class 3 Public Primary Certification Authority - G5» с неизвестным доверием к mozilla (bug 602107), так как по умолчанию цепь заканчивается слишком рано.
В настоящее время ваш XPI подписан с вашим сертификатом без дополнительной цепи сертификации, полагаясь на то, что браузер пользователя будет доверять эмитенту вашего сертификата немедленно. Вы можете проверить это с помощью jarsigner
инструмента Mozilla (см Mozilla NSS tools):
Tools\nss-3.11>jarsigner -verify -verbose -certs my-old.xpi
2057 Thu Sep 15 15:17:44 CEST 2011 META-INF/zigbert.rsa
sm 87 Thu Sep 15 15:17:44 CEST 2011 chrome.manifest
X.509, CN=Company Name inc., OU=General, OU=Digital ID Class 3 - Microsoft Software Validation v2, O=Company Name inc., L=City, ST=State, C=XX
[certificate will expire on 26.4.13 0:59]
(показывать только выход для 1-го файла)
Вы должны включать в себя несколько сертификатов, чтобы завершить цепочку сертификата, по умолчанию явно доверяет браузеру конечного пользователя.В конце концов, он должен выглядеть следующим образом:
jarsigner -verify -verbose -certs my-newly-signed.xpi
2057 Thu Sep 15 15:17:44 CEST 2011 META-INF/zigbert.rsa
sm 87 Thu Sep 15 15:17:44 CEST 2011 chrome.manifest
X.509, CN=Company Name inc., OU=General, OU=Digital ID Class 3 - Microsoft Software Validation v2, O=Company Name inc., L=City, ST=State, C=XX
[certificate will expire on 26.4.13 0:59]
X.509, CN=VeriSign Class 3 Code Signing 2010 CA, OU=Terms of use at https://www.verisign.com/rpa (c)10, OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
[certificate is valid from 8.2.10 1:00 to 8.2.20 0:59]
[KeyUsage extension does not support code signing]
X.509, CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
[certificate is valid from 8.11.06 1:00 to 8.11.21 0:59]
[KeyUsage extension does not support code signing]
X.509, OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US
[certificate is valid from 23.5.06 19:01 to 23.5.16 19:11]
Для достижения этой цели необходимо:
- удалить не-явно-доверенные встроенные сертификаты VeriSing из базы данных сертификатов с
certutil
инструментом в Mozilla
- Создайте цепочку доверия сертификатов вашего сертификата до Microsoft "Класс 3 Public Primary Certification Authority".
- признак того, XPI (на этот раз полных сертификатов цепь будет включена в подписи)
- проверить XPI с
jarsigner
, как описано выше
- испытания XPI в Firefox - вы не должны видеть «Автор не проверен» больше.
Предостережения:
- Доверительные биты во встроенном в Firefox хранилище сертификатов на самом деле 3-состояние (доверенному, ненадежных и неизвестных), несмотря на только быть показаны в виде 2-состояния флажка в GUI FF (checked = trusted, unchecked = untrusted OR неизвестен). По умолчанию trust is неизвестен, что позволяет обойти сертификат VeriSign, как описано. Если вы включили доверие через флажки FF, он все равно будет работать, но если вы снимете флажок доверия, то доверие будет установлено на ненадежным, что предотвратит обход этого сертификата в цепочке. Самый простой (только?) Способ вернуть его обратно к первоначальному неизвестному - удалить свой профиль firefox.
- После того, как Mozilla в конечном итоге включит бит доверия подписи кода (см. Выше), вам все равно нужно будет подписываться, если вы хотите поддерживать более старые версии Firefox.
Надеюсь, это поможет!
Я только что обнаружил, что если я войду в FF и развернусь в Options - Advanced - Encryption - View Certificate - Власти, найдите VeriSign Class 3 Public Primary Certification Authority - G5 и отредактируйте его Trust, чтобы включить «Этот сертификат может идентифицировать разработчиков программного обеспечения "... тогда FF уважает подпись на моем XPI. WTF? – Spike0xff