web-dev-qa-db-fra.com

Comment ajouter un autre nom de sujet aux certificats SSL?

J'utilise openssl pour créer des certificats auto-signés. Je reçois cette erreur avec les certificats que j'ai générés: javax.net.ssl.SSLHandshakeException: Java.security.cert.CertificateException: aucun autre nom de sujet n'est présent.

Est-ce que quelqu'un sait comment spécifier "Autre nom du sujet" lors de la création d'un certificat? Voici comment je génère un magasin de clés:

Sudo $Java_HOME/bin/keytool -genkey -dname "CN=192.168.x.xxx, OU=I, O=I, L=T, ST=On, C=CA" -alias Tomcat -validity 3650 -keyalg RSA -keystore /root/.keystore -keypass abcd -storepass abcd

Pour générer une clé:

 openssl s_client -connect 192.168.x.xxx:8443 2>/dev/null

S'il vous plaît aider! Merci!

40
Sapphire

Bien que cette question concernait plus spécifiquement les adresses IP dans Subject Alt. Noms, les commandes sont similaires (en utilisant DNS entrées pour un nom d’hôte et IP pour les adresses IP).

Pour me citer:

Si vous utilisez keytool, à compter de Java 7, keytool dispose d'une option permettant d'inclure un autre nom d'objet (voir le tableau dans la documentation de -ext): vous pouvez utiliser - ext san = dns: www.example.com ou -ext san = ip: 10.0.0.1

Notez que vous avez seulement besoin de Java keytool pour utiliser _] _ pour utiliser cette commande. Une fois que vous avez préparé votre magasin de clés, celui-ci devrait fonctionner avec les versions précédentes de Java.

(Le reste de cette réponse indique également comment faire cela avec OpenSSL, mais cela ne semble pas être ce que vous utilisez.)

59
Bruno

Les adresses IP et DNS peuvent être spécifiées avec l'argument supplémentaire keytool -ext SAN=dns:abc.com,ip:1.1.1.1

Exemple:

keytool -genkeypair -keystore <keystore> -dname "CN=test, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown" -keypass <keypwd> -storepass <storepass> -keyalg RSA -alias unknown -ext SAN=dns:test.abc.com,ip:1.1.1.1
21
Chandra Divi

Lorsque la génération de CSR est possible, il est possible de spécifier à nouveau l'attribut - ext pour l'insérer dans le CSR.

keytool -certreq -file test.csr -keystore test.jks -alias testAlias -ext SAN=dns:test.example.com

exemple complet ici: Comment créer une CSR avec des SAN en utilisant keytool

6
MrPatol