Débarrassez-vous de l'éditeur "UNKNOWN" de l'avertissement de sécurité de l'applet
Je suis en train de signer une applet de sorte que le éditeur n'apparaît pas comme "INCONNU" :
Je travaille pour une organisation et nous avons notre propre autorité de certificationcertificat de la chaîne d' est la suivante : ORG autorité de certification Racine > ORG Autorité de Certification de Confiance > Yann39 (moi :D)
J'ai demandé un certificat et ils m'ont fourni un lien pour le faire entrer dans le navigateur.
J'ai ensuite exporté (à partir de Firefox) pour obtenir le fichier PKCS#12 que j'ai nommé mystore.p12.
Puis j'ai fait la suite de signer mon applet :
/* 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:\oracle\dev10gr2\jdk\bin\jar cf0 test_applet.jar test.class
/* SIGN THE JAR */
c:\testrep>C:\oracle\dev10gr2\jdk\bin\jarsigner -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:\oracle\dev10gr2\jdk\bin\jarsigner -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>
Puis je charge de la appled dans mon application en utilisant les suivantes :
<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>
J'ai lu quelques posts comme celui-ci : Comment signer applet java .fichier pfx? et il semble je devrais obtenir smi
lors de la vérification de fichier signé à partir du pot, non seulement sm
cela signifie que le certificat n'a pas été trouvé dans le fichier de clés.
Donc je pensais que la chaîne de certification n'a pas été complètemais lors de l'exécution de la commande suivante, j'ai vu que ce n'était pas le cas :
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>
La chaîne semble bonne.
Mais je encore obtenir le avertissement de sécurité avec un "INCONNU" Éditeur. Pourquoi ?
EDITION 25-OCT-2012
J'ai oublié de dire que il fonctionne à l'aide d'Internet Explorer ("Signature a été vérifiée" et l'Éditeur est "Yann39"), de ne pas utiliser google Chrome ou Firefox.
J'ai essayé d'utiliser un auto-signé certificat :
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:\oracle\dev10gr2\jdk\bin\jar cf0 myapplet.jar test.class
C:\oracle\dev10gr2\jdk\bin\jarsigner -verbose -storetype pkcs12 -keystore mykeystore.p12 myapplet.jar "myalias"
C:\oracle\dev10gr2\jdk\bin\jarsigner -verify -verbose -certs myapplet.jar
Il ne fonctionne pas ni sur IE ni sur Firefox ou Chrome, normal.
J'ai essayé d'ajouter les 2 certificats approuvés à partir de mon organisation, mais il a échoué :
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
avec l'erreur :
keytool error: java.security.KeyStoreException: TrustedCertEntry not supported
Je ne comprends toujours pas pourquoi il est dit que le certificat n'a pas été trouvé dans le fichier de clés (sm
) lors de la vérification de la signature.
EDITION 02-NOV-2012
J'ai enfin eu une réponse de mon Autorité de Certification. Que les certificats de signature de code sont fournis pour test uniquement (pas officiellement pris en charge au sein de notre organisation), ils ne fournissent pas toute l'aide et ils ont fermé mon billet...
Les 2 certificats ORG autorité de certification Racine et ORG Autorité de Certification de Confiance de la confiance dans les 3 navigateurs (IE, Firefox, Chrome). Lors de l'exécution de mon applet, je reçois toujours le résultat attendu dans IE :
- Nom: applettest
- Éditeur: Yann39
- De: https://myhost.ch
Mais pas dans Firefox et Chrome :
- Nom: test
- Éditeur: INCONNU
- De: https://myhost.ch
Une autre chose étrange est que, comme vous le voyez, c'est à dire est de référencement comme le “Nom” de l'id de la <object>
balise dans le code HTML (applettest), tandis que Firefox et Chrome sont en indiquant le nom de la classe principale (test).
Ce que je pense, c'est que c'est la même chose à propos de la Éditeurc'est à dire est à la recherche à la CN
RDN (Yann39) alors que Firefox et Chrome sont à la recherche à la O
RDN et ne peut pas en trouver un, car elle n'est pas définie dans mon certificat.
Si quelqu'un a plus d'informations sur la manière dont les navigateurs vérifier les certificats, s'il vous plaît partager.
Grâce.
source d'informationauteur Yann39
Vous devez vous connecter pour publier un commentaire.
Si vous avez votre propre autorité de certification et de signer des applets avec des certificats émis par cette autorité de certification, puis vous aurez évidemment besoin d'ajouter que l'autorité de certification du certificat à la liste des autorités de certification de confiance.
Lors de l'exécution de l'intérieur c'est à dire, le plugin Java semble être en mesure d'utiliser le système de liste de CA, vous avez juste besoin d'ajouter votre certificat d'autorité de certification du certificat de système de stockage (assurez-vous de choisir manuellement le certificat de destination comme une autorité de certification de confiance lors de l'importation).
Lors de l'exécution à l'intérieur de Chrome ou de Firefox, le plugin Java pour une raison quelconque ne pas utiliser le certificat de système de stockage, mais seulement de son propre certificat de stockage. Vous obtiendrez le "insécurité" avertissement de sécurité " avec des "INCONNUS" de l'éditeur lors de l'exécution de l'applet dans ces navigateurs si le certificat de l'AC n'est pas présent dans le plugin Java certificat de stockage, indépendamment du fait que c'est dans le "autorité de certification de confiance" certificat de système de stockage.
Ajouter un certificat à Java plugin de stockage:
La prochaine fois que vous utilisez Chrome ou Firefox pour exécuter l'applet, vous aurez une normal "sécurisé" avertissement de sécurité avec l'option de la confiance que l'applet pour toujours.
Vous avez besoin pour ajouter des certificats d'autorité de certification (jusqu'à l'AC racine) de votre fichier p12 avant de signer.
Le même étrange "INCONNU" Message est apparu quand j'ai changé mon certificat de signature. J'ai importé le certificat de signature par moi de fichier de clés dans le fichier cacerts (alors que mon auto-signé pot serait acceptée), mais le cache de java a tenu ancien jarfiles. Ensuite, lors du démarrage de la "vieille" applet avec le "nouveau" certificat, un message similaire à celui ci-dessus est apparu.
Solution: effacer le cache de java (via le panneau de configuration java ou javaws -désinstaller).
Cela juste au cas où quelqu'un (comme moi) tombe par hasard sur ce Fil, alors que la recherche de ce Message d'Erreur.
Emm... tout semble assez difficile parce que vous demo le processus de signature depuis les certificats d'importation...
Bien sûr, il a échoué. Parce que vous ne pouvez pas importer les certificats pour obtenir de la chaîne pour les non-clés originales. Et revenir à votre cas de test...
Tout ce que je peux voir dans votre cas de test des choses comme:
myalias_auth clé(s) - donner plus de détails ici
ORGTrustedCertificationAuthority
Dans l'étape B Vous essayez d'importer 2 certs. Donc, je dois demander
myalias_auth RSE(s)?
Si ils n'étaient pas si je suppose que vous avez juste sauté quelques étapes, comme suit:
myalias_auth clé(s)
myalias_auth RSE(s)
Et une fois de plus...
Comme un résultat, je peux vous conseiller
fichier de clés clés les certificats ont été générés de
mentionné précédemment ABCDE suit 🙂
Vous importés manuellement et ensuite vous exportés comme décrit ici ?
OK... c'est tout à fait intéressant. Si vous assurer que toutes les choses dans votre pfx droit :S je re-jouer la votre jarsigner à l'aide de la démo. Si vous signez l'test_applet.jar comme
... c'est assez standard de signature du chemin, mais je tiens à souligner un petit détail... je ne vois pas où jarsigner demandes vous à entrer dans le "id de yann39" clé privée mot de passe :S ? Tout ce que je peux voir que vous entrez le mot de passe du fichier de clés ... Est l'étape sauté dans votre copier-coller de la version ou de jarsigner est vraiment ne vous demande de rentrer un mot de passe?
Comme un essai, je ne vous conseille d'essayer de signer votre pot à l'aide de -keypass arg comme (voir l'exemple)
Pour plus de détails, voir comment utiliser jarsigner docs...
Si vous avez généré les clés de votre fichier de clés avec keytool vous devez savoir que le fichier de clés a son mot de passe et nouvellement généré la clé privée(s) doit avoir son propre mot de passe; Donc je suppose que peut-être quelque chose qui manque ici :S Il serait intéressant que vous A) importer votre pfx pour IE et de l'exporter avec IE comme décrit ici : depuis le "Oui, exporter la clé privée les instructions de" + "Inclure tous les certificats dans le chemin de certification, si possible"
P. S.
S'il vous plaît commentaire si cela vous a été utile