Comment importer un certificat .cer dans un KeyStore Java

Haut Java

Je viens d'annoncer le nouveau cours Learn Spring , axé sur les principes de base de Spring 5 et Spring Boot 2:

>> VOIR LE COURS

1. Vue d'ensemble

Un KeyStore, comme son nom l'indique, est essentiellement un référentiel de certificats, de clés publiques et privées. De plus, les distributions JDK sont livrées avec un exécutable pour les gérer, le keytool .

D'un autre côté, les certificats peuvent avoir de nombreuses extensions, mais nous devons garder à l'esprit qu'un fichier .cer contient des clés publiques X.509 et qu'il ne peut donc être utilisé que pour la vérification d'identité.

Dans ce court article, nous verrons comment importer un fichier .cer dans un Java KeyStore.

2. Importation d'un certificat

Sans plus tarder, importons maintenant le fichier de certificat public Baeldung dans un exemple de KeyStore.

L' outil keytool a de nombreuses options, mais celle qui nous intéresse est importcert, qui est aussi simple que son nom. Comme il y a généralement différentes entrées dans un KeyStore, nous devrons utiliser l' argument alias pour lui attribuer un nom unique:

> keytool -importcert -alias baeldung_public_cert -file baeldung.cer -keystore sample_keystore > Enter keystore password: ... > Trust this certificate? [no]: y > Certificate was added to keystore 

Bien que la commande demande un mot de passe et une confirmation, nous pouvons les contourner en ajoutant les arguments storepass et noprompt . Ceci est particulièrement pratique lors de l'exécution de keytool à partir d'un script:

> keytool -importcert -alias baeldung_public_cert -file baeldung.cer -keystore sample_keystore -storepass pass123 -noprompt > Certificate was added to keystore

De plus, si le KeyStore n'existe pas, il sera automatiquement généré. Dans ce cas, nous pouvons définir le format via l' argument storetype . S'il n'est pas spécifié, le format KeyStore est par défaut JKS si nous utilisons Java 8 ou une version antérieure. À partir de Java 9, il est par défaut PKCS12 :

> keytool -importcert -alias baeldung_public_cert -file baeldung.cer -keystore sample_keystore -storetype PKCS12 > Enter keystore password: > Re-enter new password: ... > Trust this certificate? [no]: y > Certificate was added to keystore 

Ici, nous avons créé un KeyStore PKCS12. La principale différence entre JKS et PKCS12 est que JKS est un format spécifique à Java, tandis que PKCS12 est un moyen normalisé de stockage des clés et des certificats

Au cas où nous en aurions besoin, nous pouvons également effectuer ces opérations par programme.

3. Conclusion

Dans ce tutoriel, nous avons expliqué comment importer un fichier .cer dans un KeyStore. Pour ce faire, nous avons utilisé l' option importcert de keytool .

Fond Java

Je viens d'annoncer le nouveau cours Learn Spring , axé sur les principes de base de Spring 5 et Spring Boot 2:

>> VOIR LE COURS