Избавьтесь от" неизвестного " издателя из предупреждения безопасности апплета

я пытаюсь подписать апплет так что издатель не отображается как "неизвестный" :

Applet security warning showing an "UNKNOWN" publisher

я работаю в организации и у нас есть наш собственный центр сертификации, цепочки сертификатов следующий : org Root CA > ORG доверенный центр сертификации > Yann39 (me :D)

я попросил сертификат, и они предоставили мне ссылка, чтобы получить его в браузере. Затем я экспортировал его (из Firefox), чтобы получить файл PKCS#12, который я назвал последующим.Р12.

затем я сделал следующее Подпишите мой апплет :

/* TO KNOW THE ALIAS */
c:testrep>keytool -list -storetype pkcs12 -keystore mystore.p12
Enter keystore password:  ********

Keystore type: pkcs12
Keystore provider: SunJSSE

Your keystore contains 1 entry

id de yann39, Oct 24, 2012, keyEntry,
Certificate fingerprint (MD5): D7:E3:83:1D:C1:40:68:72:5F:A8:6F:AC:3A:EA:DD:47

/* CREATE FAKE CLASS FILE AND BUILD A JAR */
c:testrep>echo test > test.class
c:testrep>C:oracledev10gr2jdkbinjar cf0 test_applet.jar test.class

/* SIGN THE JAR */
c:testrep>C:oracledev10gr2jdkbinjarsigner -verbose -storetype pkcs12 -keystore mystore.p12 test_applet.jar "id de yann39"
Enter Passphrase for keystore: ********
 updating: META-INF/MANIFEST.MF
   adding: META-INF/ID_DE_YA.SF
   adding: META-INF/ID_DE_YA.RSA
  signing: test.class

/* VERIFY THE SIGNATURE */
c:testrep>C:oracledev10gr2jdkbinjarsigner -verify -verbose -certs test_applet.jar

         132 Wed Oct 24 17:49:52 CEST 2012 META-INF/MANIFEST.MF
         185 Wed Oct 24 17:49:52 CEST 2012 META-INF/ID_DE_YA.SF
        4801 Wed Oct 24 17:49:52 CEST 2012 META-INF/ID_DE_YA.RSA
           0 Wed Oct 24 17:48:36 CEST 2012 META-INF/
sm         0 Wed Oct 24 17:47:46 CEST 2012 test.class

      X.509, CN=Yann39, CN=794324, CN=myname, OU=Users, OU=Organic Units,
DC=myorg, DC=ch
      X.509, CN=ORG Trusted Certification Authority, DC=myorg, DC=ch
      X.509, CN=ORG Root CA, DC=myorg, DC=ch


  s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar verified.

c:testrep>

Потом загрузить appled в моем приложении, используя следующие :

<object id="mytestapplet" width="0" height="0" style="position:absolute" type="application/x-java-applet">
<param name="archive" value="https://myhost.ch/rep/test_applet.jar">
<param name="code" value="test">
<param name="scriptable" value="true">
<param name="mayscript" value="no">
</object>

я читал некоторые сообщения, как этот:как подписать Java апплет с .файл pfx? и вроде Я должен получить smi при проверке подписанного файла из jar не только sm это означает, что сертификат не найден в хранилище.

так Я думал, что цепочка сертификатов не полная, но при выполнении следующей команды Я видел, что это не так :

c:testrep>keytool -list -v -storetype pkcs12 -keystore mystore.p12
Enter keystore password:  ********

Keystore type: pkcs12
Keystore provider: SunJSSE

Your keystore contains 1 entry

Alias name: id  de yann39
Creation date: Oct 24, 2012
Entry type: keyEntry
Certificate chain length: 3
Certificate[1]:
Owner: CN=Yann39, CN=794324, CN=myname, OU=Users, OU=Organic Units,
    DC=myorg, DC=ch
Issuer: CN=ORG Trusted Certification Authority, DC=myorg, DC=ch
Serial number: 12d21eb200200000a02b
Valid from: Mon Jun 25 14:16:00 CEST 2011 until: Wed Jun 24 14:16:00 CEST 2013
Certificate fingerprints:
         MD5:  D7:E3:83:1D:C1:41:78:72:5F:A8:6D:BD:3A:ED:DD:48
         SHA1: 24:31:1D:25:02:98:0D:F8:28:6A:F1:0E:E8:BB:04:7E:51:E2:E9:66
Certificate[2]:
Owner: CN=ORG Trusted Certification Authority, DC=myorg, DC=ch
Issuer: CN=ORG Root CA, DC=myorg, DC=ch
Serial number: 601fab4c000000000003
Valid from: Tue Oct 02 11:36:53 CEST 2006 until: Mon Oct 02 11:47:53 CEST 2016
Certificate fingerprints:
         MD5:  51:A1:EA:33:21:2C:71:60:A1:6F:F1:22:92:A8:51:8D
         SHA1: 66:CD:70:13:27:68:F3:C2:08:F3:BE:5F:BF:D4:17:BD:85:9D:10:65
Certificate[3]:
Owner: CN=ORG Root CA, DC=myorg, DC=ch
Issuer: CN=ORG Root CA, DC=myorg, DC=ch
Serial number: 7dc0d089138d1d804b2e68e21b947412
Valid from: Tue Oct 02 10:55:19 CEST 2006 until: Sat Oct 02 11:01:47 CEST 2026
Certificate fingerprints:
         MD5:  A2:CE:DC:7D:F5:60:D7:2C:5E:B5:29:74:9D:51:F9:49
         SHA1: DA:D8:7F:63:95:90:A2:E4:D4:1D:B9:48:FD:F4:C3:5C:FC:2B:B6:A3


*******************************************
*******************************************



c:testrep>

цепь кажется хорошей.

Но Я еще скачать предупреждение С "неизвестный" издатель. почему ?


РЕДАКТИРОВАТЬ 25-OCT-2012

я забыл сказать, что он работает с помощью Internet Explorer ("подпись была проверена", а издатель - "Yann39"), не используя Chrome или Firefox.

я попытался с помощью самоподписанный справка :

keytool -genkey -alias myalias -storetype PKCS12 -keystore mykeystore.p12 -dname "cn=Yann39, ou=UN, o=ORG, st=Geneva, c=CH"
keytool -list -v -storetype pkcs12 -keystore mykeystore.p12
echo test > test.class
C:oracledev10gr2jdkbinjar cf0 myapplet.jar test.class
C:oracledev10gr2jdkbinjarsigner -verbose -storetype pkcs12 -keystore mykeystore.p12 myapplet.jar "myalias"
C:oracledev10gr2jdkbinjarsigner -verify -verbose -certs myapplet.jar

он не работает ни в IE, ни в Firefox или Chrome, нормально.

я попытался добавить 2 доверенных сертификата из моего организация но это не :

keytool -import -alias "myalias_root" -file ORGRooTCA.crt -storetype pkcs12 -keystore mykeystore.p12
keytool -import -alias "myalias_auth" -file ORGTrustedCertificationAuthority.crt -storetype pkcs12 -keystore mykeystore.p12

ошибка :

keytool error: java.security.KeyStoreException: TrustedCertEntry not supported

я до сих пор не понимаю, почему он говорит, что сертификат не найден в хранилище (sm) при проверке подписи.


ПРАВКА 02-НОЯ-2012

я, наконец, получил ответ от моего центра сертификации. Поскольку сертификаты подписи кода предоставляются только для тестирования (официально не поддерживаются в нашей организации), они не предоставляют никаких помочь и они закрыли мой билет...

в 2 сертификаты ORG Root CA и доверенный центр сертификации ORG доверяют в 3 браузерах (IE, Firefox, Chrome). При запуске моего апплета я все равно получаю ожидаемый результат в IE:

но не в Firefox и Chrome :

еще одна странная вещь заключается в том, что, как вы видите, IE ссылается как "имя" идентификатор <object> тег в HTML (applettest), в то время как Firefox и Chrome ссылается на имя основного класса (тест).

я думаю, что это то же самое о издатель, IE смотрит на CN RDN (Yann39) в то время как Firefox и Chrome смотрят на O RDN и не может найти его, поскольку он не определен в моем сертификате.

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

спасибо.

4 ответов


Если у вас есть собственный ЦС и подписывать апплеты с сертификатами, выданными этим ЦС, то Вам, очевидно, нужно добавить сертификат этого ЦС в список доверенных центров сертификации.

при работе внутри IE плагин Java, похоже, может использовать системный список ЦС, поэтому вам просто нужно добавить сертификат ЦС в хранилище системных сертификатов (обязательно вручную выберите назначение сертификата в качестве доверенного ЦС во время импорта).

при запуске внутри Chrome или Firefox плагин Java по какой-то причине не использует системное хранилище сертификатов, а только собственное отдельное хранилище сертификатов. Вы получите "небезопасное" предупреждение безопасности с" неизвестным " издателем при запуске апплета в этих браузерах, если сертификат CA не присутствует в хранилище сертификатов Java plugin, независимо от того, находится ли он в хранилище системных сертификатов "trusted CA".

чтобы добавить сертификат в плагин Java хранение:

  • открыть Панель управления Java
  • выберите вкладку "Защита"
  • нажмите кнопку "управление сертификатами...- кнопка!--10-->
  • выберите опцию "подписывающий CA" в поле со списком "тип сертификата".
  • импортируйте сертификат CA

в следующий раз, когда вы используете Chrome или Firefox для запуска апплета, у вас будет обычное "безопасное" предупреждение безопасности с возможностью доверять этому апплету навсегда.


перед подписанием необходимо добавить сертификаты CA (до корневого CA) в файл p12.


то же самое странное" неизвестное " сообщение появилось, когда я изменил свой сертификат подписи. Я импортировал сертификат моего хранилища ключей подписи в cacerts (чтобы мой самозаверяющий jar был принят), но кэш java содержал старый jarfile. Затем при запуске" старого "апплета с" новым " сертификатом появилось сообщение, подобное приведенному выше.

решение: очистите кэш java (через Панель управления java или javaws-uninstall).

Это на всякий случай кто-то (например я) натыкается на этот поток во время поиска этого сообщения об ошибке.


Я попытался добавить 2 доверенных сертификата из моей организации, но это не удалось :

Емм... все кажется довольно неясным, потому что вы демо процесс подписания, так как сертификаты импорта только...

Я попытался использовать самозаверяющий сертификат, он не работает ни в IE ни в Firefox, ни в Chrome, нормально. Я попытался добавить 2 trusted сертификаты от моей организации, но это не удалось :

конечно, это не удалось. Потому что вы не можете импортировать сертификаты, чтобы получить цепочку для неоригинальных ключей. И возвращаясь к вашему тестовому случаю...

все, что я вижу в вашем тесте такие вещи, как:

  • A) вы ген может быть Алиас или, может быть,myalias_root и myalias_auth ключ(ы) - дайте более подробную информацию здесь
  • B) вы пытаетесь импортировать ORGRooTCA и ORGTrustedCertificationAuthority
  • C) вы пытаетесь подписать тестовая банка

на шаге B вы пытаетесь импортировать 2 сертификата. Поэтому я должен спросить

  • были ли два сертификата, созданные с помощью myalias_root и
    myalias_auth КСО(ы)?

Если бы они не были так полагаю, вы просто пропустили некоторые шаги следующим образом:

  • A) Gen myalias_root и myalias_auth