Pages : 1
#1 Le 16/04/2010, à 14:45
- thecanea
Keystore, HTTPS et CURL
Bonjour à tous,
Je rencontre un souci avec du SSL, et je ne savais pas trop à quel endroit le posté au mieux.
Je présente la situation : j'ai déployé un serveur tomcat6 sur ma machine de dev(ubuntu 9.10).
J'ai activé le mode ssl dans le fichier $TOMCAT_HOME/conf/server.xml en utilisant les lignes suivantes :
<Connector
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="/usr/share/tomcat6/.keystore" keystorePass="password" keyAlias="tomcat"
clientAuth="false" sslProtocol="TLS"/>
J'ai donc créé un keystore pour tomcat à l'endroit suivant : /usr/share/tomcat6/.keystore
Il contient les infos suivantes :
thecanea@ubn:/usr/share/tomcat6$ keytool -list -keystore ./.keystore
Tapez le mot de passe du Keystore :
Type Keystore : JKS
Fournisseur Keystore : SUN
Votre Keystore contient 1 entrée(s)
tomcat, 16 avr. 2010, PrivateKeyEntry,
Empreinte du certificat (MD5) : 73:BA:09:FB:01:CC:8B:27:02:26:B5:10:40:77:D1:B3
Ceci étant, il n'y aucun problème, je peux accéder à mes pages en https, avec l'url suivante : https://localhost:8443/monservice; Firefox me demande d'ajouter l'exception de sécurité, je retrouve bien mon certificat, aucun problème.
Pour générer ma clé dans mon keystore j'ai utilisé la commande suivante :
keytool -genkey -alias tomcat -keystore /usr/share/tomcat6/.keystore
Ensuite, et c'est là que je vais avoir un souci, je souhaite récupérer (get) des infos sur mon site en https, via curl (j'ai testé depuis la librairie php, et depuis la commande curl directement dans la console).
J'ai exporté mon certificat pem (et c'est là où je ne suis pas sûr de m'y être bien pris...) via la commande :
keytool -exportcert -alias tomcat -rfc -file /moncert.pem -keystore ./.keystore
Ensuite j'effectue la commande suivante :
thecanea@ubn:~$ curl -d "test=toto" -G --cert /usr/share/test/moncert.pem https://192.168.2.105:8443/cas/login
curl: (58) unable to set private key file: '/usr/share/test/moncert.pem' type PEM
Du coup j'obtiens l'erreur suivante : curl: (58) unable to set private key file: '/usr/share/test/moncert.pem' type PEM
Et je ne vois pas comment spécifier proprement l'utilisation du certificat pour curl.
Je pense que c'est à la génération de ce certificat que je ne fais peut être pas la bonne manipulation, je ne sais pas...
Auriez vous des idées pour m'aiguiller svp ?
Merci par avance,
Cordialement,
Thecanea
Hors ligne
#2 Le 21/04/2010, à 14:30
- thecanea
Re : Keystore, HTTPS et CURL
J'ai trouvé la solution, c'était un problème de configuration SSL.
En effet, il est nécessaire de passer à curl un certificat contenant à la fois la clé privée et le certificat de notre serveur.
J'ai trouvé l'info dans le détail des options de curl : http://curl.haxx.se/docs/manpage.html
-E/--cert <certificate[:password]>
(SSL) Tells curl to use the specified certificate file when getting a file with HTTPS or FTPS. The certificate must be in PEM format. If the optional password isn't specified, it will be queried for on the terminal. Note that this option assumes a "certificate" file that is the private key and the private certificate concatenated! See --cert and --key to specify them independently.
If curl is built against the NSS SSL library then this option tells curl the nickname of the certificate to use within the NSS database defined by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be loaded.
If this option is used several times, the last one will be used.
Si ça peut servir...
Cordialement,
Thec
Hors ligne
Pages : 1