Trouver si un certificat est auto-signé ou signé CA
J'ai une application web, ce qui permet à l'utilisateur de télécharger pkcs12. - Je stocker les pkcs12 comme binaire en base de données. Est-il possible pour moi de savoir si le certificat pkcs12 est auto-signé ou CA signé?
Je suis en cours d'exécution Java web application sur tomcat et de disposer d'openssl à ma disposition.
Vérifier mon répondre sur la sécurité stackexchange.
OriginalL'auteur Nishan | 2012-04-25
Vous devez vous connecter pour publier un commentaire.
C'est très orthodoxe, mais la
openssl x509
commande pouvez rapporter à la fois l'émetteur et le sujet. Si le sujet et l'émetteur sont les mêmes, il est auto-signé; si elles sont différentes, alors qu'il a été signé par une autorité de certification. (À strictement parler, un grand nombre de certificats auto-signés sont aussi signé par une autorité de certification -- eux-mêmes.)Lors du test de cette théorie, j'ai couru une poignée de tests; il fonctionne quelque chose comme:
Espère que cette aide.
Vous pouvez améliorer cela il vous suffit de faire
openssl x509 -in $f -issuer -subject
, et la suppression de lahead
et deuxièmeopenssl
commandes.Vous avez dit "s'ils sont différents, alors qu'il a été signé par une autorité de certification". Je pense qu'il est important de remarquer qu'il ne fait pas. Généralement, un certificat est signé par plus d'un certificat de chaîne. Ex:Votre principal certificat est signé par une seconde que les est lui-même signé par un autre certificat et ainsi de suite. Il est important de vérifier tous les certificats de la chaîne afin de s'assurer que le premier certificat de validation. Le reste c'est une grande Technique. merci!
c'est un bon point -- ce n'est pas un vérificateur, ce n'est qu'une façon de dire à l'auto-signé en dehors de CA-signé.
"-noout" serait un peu plus propre que "| head -1"
OriginalL'auteur sarnold
Mail suivante thread précisément dit la bonne façon de vérifier si le certificat crypté en base64 (c'est à dire PEM) est auto-signé ou pas: http://marc.info/?l=openssl-users&m=116177485311662&w=4
Qui suit est l'extrait de code:
doit retourner:
OU de comparer l'émetteur et l'objet. Si elles sont identiques, il est auto-signé
OriginalL'auteur NitinB
Avez-vous essayé le BouncyCastle lib?
http://www.bouncycastle.org/wiki/display/JA1/Frequently+Demande+Questions
"
Il existe des exemples de programmes pour traiter avec l'Attribut Certificats PKCS12, SMIME et OpenPGP. Ils peuvent être trouvés dans les paquets:
org.bouncycastle.la jce.exemples
org.bouncycastle.mail.smime.exemples
org.bouncycastle.openpgp.exemples
Une autre source utile d'exemples est le test des paquets:
org.bouncycastle.crypto.test
org.bouncycastle.la jce.fournisseur de.test
org.bouncycastle.de la cms.test
org.bouncycastle.mail.smime.test
org.bouncycastle.openpgp.test
org.bouncycastle.cert.test
org.bouncycastle.pkcs.test
org.bouncycastle.c. à thé de.test
"
OriginalL'auteur
Java est incapable pour analyser
PKCS12
de sorte que vous devez le convertir enkeystore
utilisant openssl.Ici le fichier de clés est à la fois la clé privée et le certificat X509(ou vous pouvez choisir de ne stocker le certificat). Puis obtenir l'émetteur de
keystore
en utilisant la norme API JAVA et vérifier manuellement émetteur.OriginalL'auteur frogcdcn