Comment importer un Certificat de GoDaddy pour la Signature de Code Java? [fermé]


Je dois pouvoir signer des fichiers jar avec un certificat d'une autorité de certification.

Je suis les instructions de la documentation de GoDaddy sur la façon de procéder: http://support.godaddy.com/help/article/4780/signing-java-code

Cependant, l'étape 3 nécessite l'importation d'un fichier de certificat obtenu à partir du site Web de GoDaddy. Selon la documentation, la commande est:

keytool -import -trustcacerts -keystore codesignstore -storepass <yourstorepwd> -alias codesigncert -file mycert.cer

Bien que je soumette avec succès le CSR (généré par keytool) et obtienne une réponse, je ne peux pas pour la vie de moi comprendre comment obtenir le mycert.fichier cer. Il existe une option pour télécharger un fichier PEM. Mais après avoir exécuté la commande ci-dessus, j'obtiens l'erreur "keytool error: java.lang.Exception: Chaîne de certificats incomplète en réponse". J'ai essayé cela plusieurs fois et j'ai vérifié que j'utilise le magasin de clés approprié. J'ai même essayé de saisir à nouveau en utilisant SSH-1 une fois, puis SSH-2 l'autre fois. Selon cette personne (https://stackoverflow.com/questions/20793254/signing-a-jar-the-signers-certificate-chain-is-not-validated?rq=1), ils ont pu au moins importer avec succès le fichier PEM. Mais je ne sais pas si c'est même la bonne approche.

Le support technique de GoDaddy a été absolument terrible. La plupart des techniciens à qui j'ai parlé ne sont pas du tout familiers avec keytool, et il m'a fallu plusieurs essais pour les appeler avant qu'ils ne me transmettent à leur service SSL (480-505-8852), qui est à moins légèrement mieux que le soutien général.

Si j'utilise Internet Explorer ou Firefox, je crois que je peux générer automatiquement un CSR au lieu d'en créer un via un outil clé. Ensuite, j'exporterais le certificat via le navigateur Web. En lisant divers autres documents en ligne, je crois que je pourrais ensuite utiliser openssl pour convertir au format approprié pour keytool. Je ne suis pas sûr des détails de la façon dont cela fonctionnera encore, mais je ne vois pas d'autres options.

Quelqu'un A réussi avec cela ou avez des conseils sur la façon de procéder? J'ai trouvé une question similaire ici (Signer une applet java avec un fichier spc de GoDaddy ), mais la réponse me pointe simplement vers la mauvaise documentation de GoDaddy. J'utiliserais un autre AC si je le pouvais, mais j'ai déjà payé l'argent et passé par le long processus de vérification.

Author: Community, 2014-01-03

10 answers

La solution consiste à contacter GoDaddy et à lui demander de réémettre le certificat de votre organisation. Pendant le processus de configuration du certificat, vous devez sélectionner un certificat SHA-1 codesign au lieu de SHA-2. L'option pour sélectionner SHA-1 ne sera disponible que si la validité de votre certificat ne s'étend pas à 2016 (voir ci-dessous), donc assurez-vous qu'ils comprennent que votre objectif final est de recréer votre certificat SHA-2 en tant que SHA-1, afin qu'ils sachent vous vendre un certificat avec la période de validité correcte.

Je j'ai échangé mon certificat SHA-2 contre un SHA-1 aujourd'hui, et Les instructions de signature de code Java de GoDaddy ont parfaitement fonctionné.

GoDaddy m'a informé que Keytool pourrait avoir du mal à importer une chaîne de réponse de certificat générée à partir de leur certificat de conception de code SHA-2 (longueur 2048). Je retiens le jugement de Keytool car il importe bien les certificats SHA-2 lorsque le certificat SHA1 racine de GoDaddy est supprimé du fichier pem par la réponse de @mogsie.

GoDaddy va avec SHA-2 automatiquement quand il accorde codesign certificats qui s'étendront jusqu'en 2017 car Microsoft n'acceptera pas moins de SHA-2 à partir du 1er janvier 2016, donc si vous êtes sur le marché pour un certificat SHA-1, il aura une validité à court terme.

Le problème pourrait disparaître avec une mise à jour Java Keytool (je travaillais avec 1.6), ou si le certificat auto-signé Sha256withRSA de GoDaddy devient largement approuvé.

 10
Author: Rich Ehmer, 2014-02-06 16:50:09

La réponse, comme mentionné par Waterbear, est d'avoir votre GoDaddy cert réédité ou rekeyed par GoDaddy en utilisant SHA-1. La raison est que GoDaddy a deux serveurs CA: Class 2 CA qui est utilisé pour signer des certificats SHA-1 et G2 CA qui est utilisé pour signer des certificats SHA-2. Alors que les plus âgés Class 2 CA est approuvé par le Truststore Java (et donc SHA-1 certificates sont approuvés), le plus récent G2 CA est pas, donc ses certificats SHA-2ne sont pas approuvés sauf si vous installez manuellement son certificat racine (qui va à l'encontre du but d'acheter un certificat en premier lieu). Espérons que Godaddy's G2 CA sera bientôt approuvé par le Java Truststore (avant 2016!), mais jusqu'à ce que cela se produise, un certificat GoDaddy SHA-2 n'est pas meilleur qu'un certificat auto-signé.

 5
Author: idlegravity, 2014-01-20 22:47:54

Puisque j'ai apprécié (pas) le processus de création d'un certificat codesinging donc beaucoup, je pensais que je partagerais le processus que j'ai traversé, et j'espère quand vous devez générer votre propre, cela vous évitera une partie du chagrin d'amour et de la douleur .

J'ai utilisé godaddy, mais je dois croire que quel que soit le CA, les étapes devraient soyez très similaire.

Ce sont les étapes que j'ai traversées:

(notez que godaddy ne crée pas de certificat codesigning au format jks et il y a un étape supplémentaire nécessaire pour convertir le keystore en jks)

Créer keystore:

Keytool -genkey-alias codesigncert -keypass votre mot de passe -keyalg RSA - keysize 2048-dname "cn=server1.lccc.edu, OU=Nom du collège, O = Collège Nom, L = Schnecksville, ST = Pennsylvanie, C = États-Unis" - keystore /home/oracle/codesignstore/codesignstore -storepass yourpassword-validity 720 (storepass et keypass peuvent être identiques)

Générateur crt pour godaddy

Keytool-certreq - v-alias codesigncert - fichier /home/oracle/codesignstore/codesignstore.pem - keystore /home/oracle/codesignstore/codesignstore

En utilisant un éditeur, ouvrez codesignstore.pem et le coller dans le site godaddy

Lorsque godaddy vérifie le compte et que vous payez votre argent le "en attente" le statut disparaîtra

Accédez à votre compte godaddy (https://mya.godaddy.com/)

Cliquez sur myaccount en haut de la page (dans l'en-tête noir)

Cliquez sur Gérer SSL Certificats

Sélectionnez le certificat codesigning répertorié

Cliquez sur le bouton de Lancement

Télécharger le fichier en tant que fichier PEM

Enregistrez-le sur votre PC local

Ouvrez Firefox, dans la section avancée, sélectionnez afficher les certificats, et le

Le certificat doit être répertorié dans les vues gérées.

Mettez en surbrillance le certificat, sélectionnez Sauvegarder (exporter) et enregistrez-le en tant que pkcs12 fichier

Cliquez sur Afficher les certificats en haut de l'écran suivant de certificat viewer est l'alias entre guillemets doubles, à droite ce sera l'alias de être utilisé sur la commande jarsigner ci-dessous

Copiez le fichier sur le serveur où se trouve le certificat codesigning

Utilisé: (par exemple server1 / home / oracle / code_sign_cert_from_godaddy/ godaddy_pkcs12.p12) * ceci est le nouveau keystore

Puisque le magasin de clés doit être de type jks, et godaddy ne crée pas fichier jks il doit être converti au format jks

Convertir pcks12 à jks

Keytool-importkeystore - srckeystore /home/oracle/code_sign_cert_from_godaddy/godaddy_pkcs12. p12-srcstoretype pkcs12 - destkeystore /home/oracle/code_sign_cert_from_godaddy/godaddy_jks.jks -deststoretype jks

Traitement des fichiers Jar:

Unsignez jacob.pot... j'ai copié le jacob.fichier jar à un test répertoire / test_jacob et renommé jacob1.jar (note 760815.1)

Jar xf jacob1.jar

Extraits dans les dossiers " com " et "META-INF", supprimer le " META-INF" dossier

Supprimer l'ancien jacob1.jar

Recréer le jacob1.jar du répertoire / test_jacob

Jar-cvf jacob1.pot *

Exécuter jarsigner-vérifier jacob1.jar, devrait montrer unisigned.

Créer un appel de fichier texte mymanifest.txt

  Permissions: all-permissions

  Codebase: *

  Application-Name: OracleForms

Jar-upm jacob1.jar mymanifest.txt (cela met les nouvelles informations du manifeste dans le fichier jar)..

Vous pouvez ouvrir jacob1.jar avec le décompresser jacob1.répertoire jar-d où décompressez résidera pour vérifier que le mymanifest.le fichier txt fait maintenant partie du fichier jar.

Signer le fichier jar

Jarsigner - keystore /home/oracle/code_sign_cert_from_godaddy/godaddy_jks.jks - storepass votre mot de passe - signedjar /home/oracle/Oracle/Middleware/Oracle_FRHome1/formes/java/tes t_jacob / Signéjacob1.jar jacob1.jar "lehigh carbone de la communauté du collège godaddy.com, inc. id " (cet alias provient du processus Firefox ci-dessus)

L'option de fichier-signedjar était requise, sans que je l'obtienne erreurs

Remarque l'alias est toujours la dernière entrée de la commande jarsigner et

Il n'y a pas d'option –alias comme il y en avait sur la commande keytool

Vérifier que le fichier jar est signé

Jarsigner-vérifier Signéjacob1.jar affichera:

Jar vérifié.

Afficher ce qui est dans le fichier jar

Jar-tvf Signéjacob1.jar

Le .Le fichier SF est à l'intérieur du .fichier jar, le .Le fichier DSA est remplacé par le .RSA

Fichier qui est également à l'intérieur le .fichier jar

De la sortie du jar-tvf Signéjacob1.pot

2721 Lun mai 05 15:57: 08 EDT 2014 META-INF / LEHIGH_C.SF

4231 Lun mai 05 15: 57: 08 EDT 2014 META-INF / LEHIGH_C.RSA

J'ai copié le Signedjacob1.fichier jar dans le fichier OR ORACLE_HOME / forms / java puis en utilisant le

Connexion au gestionnaire d'entreprise weblogic

J'ai changé le paramètre webutiarchive de Jacob.pot à Signéjacob1.jar pour chaque instance

(em > > formulaires > > configuration web > > nom de l'instance > > tous (le premier l'entrée doit être le paramètre archive)

Lors du changement de jacob.jar au Signéjacob1.pot , je l'ai fait pour chacun de mes instances de test avant de le faire pour la production, juste au cas où.

Arrêtez et démarrez wls_forms et vous devriez être prêt à partir..

 5
Author: Don Thaler, 2014-09-17 12:56:26

@ Waterbear Merci beaucoup pour votre solution concernant l'obtention d'un certificat SHA-1 au lieu de SHA-2. C'était certainement le problème que j'avais. (J'aurais posté ceci sous votre commentaire, mais StackOverflow a dit que c'était beaucoup trop long.) J'avais obtenu un certificat de 3 ans, et par défaut GoDaddy donne un SHA-2 pour les certificats expirant après une certaine date. Cependant, même quand j'ai recalé et demandé un SHA-1, je me suis quand même retrouvé avec un SHA-2. J'ai dû révoquer mon certificat et puis démarrez le processus à partir de zéro pour obtenir un certificat SHA-1. (En partant de zéro, je veux dire que GoDaddy doit à nouveau vérifier votre entreprise et votre numéro de téléphone et tout cela.) Soit dit en passant, si vous révoquez votre certificat, assurez-vous de demander d'abord la permission à GoDaddy, car techniquement, ils n'ont pas à vous rembourser. De plus, je n'ai pas pu obtenir un certificat de 3 ans car tout ce qui expire après une certaine date (2016?) doit être SHA-2 et non SHA-1. En gros, j'ai eu pour obtenir un remboursement pour mon certificat de 3 ans et obtenir à la place un certificat de 1 an pour même avoir l'option SHA-1. Mais après avoir suivi SHA-1, les instructions de GoDaddy dans approach#1 ont bien fonctionné. Je recommanderais de générer votre CSR manuellement à l'aide de la commande keytool (au lieu de automatiquement via un navigateur Web). Plus tard, il vous suffit de télécharger le fichier PEM et de l'importer dans le magasin de clés à l'aide de la commande keytool. (C'est ce que GoDaddy décrit dans "approche 1" dans le lien publié dans le question.)

Enfin, si vous devez faire réémettre un certificat et suivre à nouveau ce processus, je vous recommande fortement de choisir une autre entreprise que GoDaddy pour la signature de code. Leur support technique était absolument horrible. Leurs techniciens de soutien m'ont même admis qu'ils n'étaient pas formés à cela. Les heures passées sur cette question compensent grandement l'argent économisé sur le cert.

 2
Author: user64141, 2014-01-19 04:12:52
keytool -import -trustcacerts -keystore codesignstore -storepass <yourstorepwd> -alias codesigncert -file mycert.cer

Première chose, vous DEVEZ AVOIR le mycert.fichier cer. Sinon, vous n'avez pas la possibilité d'importer le certificat.

Obtenir un "lay of the land" - Qu'y a-t-il dans le fichier keystore actuel? Nous voulons lister (ou montrer) ce qui se trouve dans le magasin de clés..

keytool -list -v -keystore codesignstore

S'il vous demande le mot de passe, vous pouvez simplement appuyer sur la touche ENTRÉE et il aboiera à propos de ce n'est pas fiable, mais pour l'opportunité, c'est bien.

Si vous voulez "pomper" les résultats dans un texte fichier..

echo.|keytool -list -v -keystore codesignstore > kstore_result.txt

Remarque: l'écho. aime ce que j'ai mentionné précédemment à propos de "appuyer sur ENTRÉE", alors ne devenez pas trop attaché à cela. :)

keytool -genkey -alias codesigncert -keyalg RSA -validity 1825 -keysize 2048 -keypass <yourstorepwd> -keystore codesignstore -storepass <yourstorepwd>

Autres options:

-genkey = generate a key
-keyalg RSA = use RSA's key alogorithm
-validity 1825 = how long is the key good for?  Primarily used with self-signed certs as the certs from verisign or Thawte have their own expiration
-keysize 2048 = Is this a 1024 or 2048-bit enryption?
-keypass <yourstorepwd>
-keystore codesignstore
-storepass <yourstorepwd>

Chose dont vous devez faire très attention ici et le soutien ne vous en parlera pas.. Si vous essayez d'importer d'autres certificats à côté de ceux existants, vous devez faire attention à ne pas bâcler le tout. :)

Si vous avez un problème bien sûr, vous pouvez supprimer l'alias et importer Encore une fois..

keytool -delete -alias codesigncert -storepass <yourstorepwd> -keystore codesignstore

Une des choses que j'aime faire est de "empiler" la commande pour être sûr que je travaille dans la liste.

Par exemple, vous avez de Godaddy:

keytool -import -trustcacerts -keystore codesignstore -storepass <yourstorepwd> -alias codesigncert -file mycert.cer

Ensuite, je prends chaque commande et la configure comme suit pour" marcher " dans la liste:

keytool
-import
-trustcacerts
-keystore codesignstore
-storepass <yourstorepwd>
-alias codesigncert
-file mycert.cer

Ensuite, en regardant cette liste, ma version de keytool prend-elle en charge chacun de ces éléments? Vous avez-import en tant que premier..

Je viens de lancer keytool-help et je ne vois pas: - import, mais je vois - importcert

Il y a peut-être un problème là-bas?

Oracle nous montre.. http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

Donc, vous devrez peut-être faire quelques ajustements..

En voici un que j'ai configuré sur l'un de nos serveurs Apache Tomcat locaux (Windows):

%JAVA_HOME%\bin\keytool -delete -alias tomcat -storepass somepass -keystore %JAVA_HOME%\bin\.keystore

Et puis..

%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA -validity 1825 -keysize 2048 -keypass somepass -keystore %JAVA_HOME%\bin\.keystore -storepass somepass
What is your first and last name?
  [Unknown]:  secure.someserver.com
What is the name of your organizational unit?
  [Unknown]:  COMPANY
What is the name of your organization?
  [Unknown]:  COMPANY
What is the name of your City or Locality?
  [Unknown]:  ANYTOWN
What is the name of your State or Province?
  [Unknown]:  MI
What is the two-letter country code for this unit?
  [Unknown]:  US
Is CN=secure.someserver.com, OU=COMPANY, O=COMPANY, L=ANYTOWN, ST=MI, C=US correct?
  [no]:  yes

Remarque: Lorsque vous exécutez ceci, vous ne verrez pas si cela réussit ou non.

Commençons ici et voyons quels sont les résultats être..

 1
Author: Leptonator, 2014-01-09 23:52:39

J'ai trouvé que des quatre certificats que vous obtenez du téléchargement godaddy PEM, le premier est le certificat racine auto-signé.

Pour voir la chaîne (sous unix):

keytool -printcert -file response-from-godaddy.pem | grep -C1 ^Owner

La réponse montre les quatre certificats qui composent la chaîne, jusqu'à la racine.

Certificate[1]:
Owner: OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
Issuer: OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
--
Certificate[2]:
Owner: CN=Go Daddy Root Certificate Authority - G2, OU=https://certs.godaddy.com/repository/, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US
Issuer: OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
--
Certificate[3]:
Owner: CN=Go Daddy Secure Certificate Authority - G2, OU=http://certs.godaddy.com/repository/, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US
Issuer: CN=Go Daddy Root Certificate Authority - G2, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US
--
Certificate[4]:
Owner: CN=REDACTED
Issuer: CN=Go Daddy Secure Certificate Authority - G2, OU=http://certs.godaddy.com/repository/, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US

Apparemment, le premier est déjà dans le standard Java cacerts en tant que certificat racine de confiance. Le fait qu'il est dans l' .le fichier pem se déclenche keytool vers le haut.

J'ai lutté avec le même problème rekeying quelques fois, et j'ai eu de la chance:

  • Ouvrez le fichier PEM.
  • Supprimer la premier bloc de ----BEGIN à ----END,
  • Exécutez votre keytool -import sur le fichier contenant les trois autres certificats.

Presto!

keytool -importcert -v -trustcacerts -keystore XXX -alias codesigning -file 234.pem

Résultat:

Certificate reply was installed in keystore
[Storing XXX]
 1
Author: mogsie, 2014-01-13 00:22:57

Voici ce que j'ai fait..

Keytool -v -genkey -dname "CN=XXX, OU=YYY, O=ZZZ, L=CCC, ST=SSS, C=US" -alias maclé -keypass abc123 -keystore myKeystore -storepass abc123 -validité 1096-keyalg RSA -keysize 2048 -sigalg SHA1withRSA

Keytool -certreq -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -v -alias maclé -fichier mycsr.pem-keystore myKeystore-storepass abc123

Soumettre une demande (mycsr.pem) à GoDaddy, télécharger le fichier PEM (1b27b7d7a29a06.pem dans ce cas).

Le fichier PEM téléchargé contient mon certificat signé avec d'autres dans la chaîne de certificats. J'ai trouvé que keytool n'accepterait pas le fichier PEM tel que téléchargé. J'ai dû supprimer mon certificat du certificat téléchargé. Je l'ai fait via Key Store Explorer ( http://keystore-explorer.sourceforge.net / ) Utilisez l'option "Examiner un certificat", ouvrez le fichier PEM reçu de Godaddy (1b27b7d7a29a06.pem) cliquez sur votre certificat (pas l'un des autres de GoDaddy), cliquez sur "PEM", cliquez sur "Exporter". J'ai nommé ce certificat 1b27b7d7a29a06-mycert.pem.

Télécharger la racine (gdroot-g2.crt) et intermédiaire (gdig2.crt) certificats de GoDaddy (https://certs.godaddy.com/anonymous/repository.pki)

Notez que ceux-ci sont/on doit utiliser les certificats racine et intermédiaire GoDaddy G2.

Ensuite, installez ces certificats dans cet ordre:

Keytool -v -importcert -trustcacerts -keystore myKeystore -storepass abc123 -fichier gdroot-g2.crt-alias gdroot-g2

Il est possible de créer un fichier gdig2 en utilisant la fonction Keytool-v-importcert-trustcacerts-keystore myKeystore-storepass abc123-file gdig2.crt-alias gdig2

Keytool -v -importcert -keystore myKeystore -storepass abc123 -alias maclé -fichier 1b27b7d7a29a06-mycert.pem

Maintenant, vous pouvez signer votre application:

Jarsigner -keystore myKeystore -storepass abc123 -sigalg SHA1withRSA -digestalg SHA-1.jar maclé

 0
Author: Howard, 2014-01-22 17:20:00

J'ai eu l'erreur de certificat (CA not trusted) en utilisant le plugin java Chrome/FF pour déployer une application à partir de mon serveur Web (donc pas une applet java). Le problème a été résolu pour moi lors de l'ajout d'autres certificats CA Godaddy (intermédiaire) à mon serveur Web. J'ai créé un ticket avec godaddy et ils ont répondu (assez rapidement)

Cher Monsieur ou Madame,

Merci d'avoir contacté l'assistance secure certificate. Vous aurez besoin de utilisez le bundle de certificats intermédiaires avec la croix certificat et le certificat racine G1. Cela permettra de résoudre ce problème. Vous pouvez obtenir les certificats énumérés ci-dessous à https://certs.godaddy.com/repository.

Ensemble de certificats intermédiaires - gdig2_bundle.certificat racine crt - gd-classe 2-racine.crt

 0
Author: user3498059, 2014-04-04 13:31:59

L'importation du bundle GoDaddy résout le problème:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/
wget https://certs.godaddy.com/repository/gd_bundle-g2.crt
$JAVA_HOME/bin/keytool -import -alias root -file ./gd_bundle-g2.crt -storepass changeit -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts
 0
Author: jpereira, 2016-08-04 15:20:42

Je dois dire,

Toute cette signature Java bs semble être une méthode singulière pour que Java ne meure pas en faveur de meilleures options de code.

En réalité, je pense que cela tue java. Je préfère utiliser n'importe quelle autre méthode de codage (php/flash/etc) puis utiliser à nouveau Java. Way to go Oracle!

 -1
Author: Ateraan, 2014-02-03 05:55:13