web-dev-qa-db-fra.com

SOAPUi et keystore

Récemment, j'ai dû améliorer les communications SOAP entre moi et un service Web. Après avoir créé un fichier de clé privée sur mon serveur et après la création/l'envoi de la CSR, un fichier de certificat a été reçu au format PEM.

Je veux le tester dans SOAPUi mais il continue de dire que Erreur: l'accès est refusé. Certificat SSL client requis .

Voici ce que j'ai fait:

  • Conversion de certificats

    openssl pkcs12 -export -out **certif.p12** -inkey **myprivatekey.pem** -in **Certificate-received.pem**
    
  • Importation de keystore

    keytool -importkeystore -deststorepass **changeit** -destkeypass **changeit** -destkeystore **pierrejks.jks** -srckeystore **certif.p12** -srcstoretype PKCS12 -srcstorepass **tenzin** -alias 1
    

Dans SOAPUi,

Je suis allé dans les préférences et dans l'onglet Paramètres SSL ,

  • keystore devait être pierrejks.jks

  • mot de passe du magasin de clés fourni: changeit

  • requiert que l'authentification du client soit cochée.

Sur le projet maintenant (clic droit sur la racine du projet puis afficher la vue du projet), je suis allé à Configurations WS-Security , onglet keystore pour ajouter une nouvelle source.

  • La source est le chemin vers le fichier pierrejks.jks
  • Le mot de passe est changeit
  • Par défaut, l'alias est défini sur pierrealias
  • Aucun mot de passe d'alias fourni

Après avoir rempli ces informations, le statut est devenu ok

Dans les configurations de sécurité WS sortantes , une configuration a été ajoutée avec un nouveau chiffrement d'entrée WSS .

  • Le nom de la configuration est pierreconf
  • Le type d'entrée WSS est Cryptage
  • Le magasin de clés choisi est pierrejks.jks
  • L'alias est 1
  • le mot de passe est changeit

Enfin, une demande est faite avec pierreconf Profil WSS sortant et c'est là que j'ai l'erreur. En ce moment, si je comprends bien, l'onglet RAW montre qu'il est crypté:

POST https://gsxapi.Apple.com/gsx-ws/services/emea/iphone HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "urn:authenticate"
Content-Length: 3047
Host: gsxapi.Apple.com
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (Java 1.5)

    <soapenv:Envelope xmlns:glob="http://gsxws.Apple.com/elements/global" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><xenc:EncryptedKey Id="EK-974B3C3F270F85DA2A143289398095719" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"><xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><wsse:SecurityTokenReference><ds:X509Data><ds:X509IssuerSerial><ds:X509IssuerName>C=US,O=Apple Inc.,OU=Certification Authority,CN=Apple Corporate External Authentication CA 1</ds:X509IssuerName><ds:X509SerialNumber>6119460251051586160</ds:X509SerialNumber></ds:X509IssuerSerial></ds:X509Data></wsse:SecurityTokenReference></ds:KeyInfo><xenc:CipherData><xenc:CipherValue>yWIQ5aWqy50ba/kaw3mLYyvpBL8S+mcQnkZri8q6deJXoNFZm+TGOry9ds5VCbsYzpgjAYGFRZxnEfnAirFDqojUgbthc6E/YeG15y1GShiBZrBB3U5KVk6ZIqRaOAVSBMCG5DXosFDz0I/MrToMA8MvX5A26pgp6siM6fhfVRLfFPDCJQOQJw3gr2G3IUnu0t4jf2BIs4FPObtOZSN1ou+w3ny2meL2F0VhT2UPDbZ46EKwHiY7Az9RVt0MocWRRQSR9FU4h6zqziWbUC95OrzrKXrbo01La8UDZ4mykQXqg==</xenc:CipherValue></xenc:CipherData><xenc:ReferenceList><xenc:DataReference URI="#ED-974B3C3F270F85DA2A143289398095720"/></xenc:ReferenceList></xenc:EncryptedKey></wsse:Security></soapenv:Header>
       <soapenv:Body><xenc:EncryptedData Id="ED-974B3C3F270F85DA2A143289398095720" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"><xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><wsse:SecurityTokenReference wsse11:TokenType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsse11="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"><wsse:Reference URI="#EK-974B3C3F270F85DA2A143289398095719"/></wsse:SecurityTokenReference></ds:KeyInfo><xenc:CipherData><xenc:CipherValue>cYyhZSw7/XR9Gtj7+lzkwwilTlpuAHVYdT+v8WeofYo48j8K0CReBIdeUI3pfWQ+cEj1D+VQO1k7e6fCsDuK7vZfrCG2qrYDlJmChnDrR7Tr5QSpC/ES3ohnYFqRrNnaOAhgjrqtDevww/S0dUKxmAFEbY18rvbF+l1T32da53zo1b9mN+sD9oKdWq7w+1eJHZOpJ4WQuMcdHp9DqAxizu4nc4FX65myZieI2qoWTzKGqeNMbqqyFFVpQ0iqI+7sT5Rh9Qc/Sw9pZMHxx3x856+PH/4PExTj/00f7rzhy6MhxEFavHksBraeGU6Ctd+xRMaA4Y/ZXGytf6M9C5j0v2SDqAFtwtj9Sky2uRzsXlNwmjinI29SsGAcOOBvyB7+Ff8rSATR3snMgvuNN3l0GsLDP1tzqz7vhHkCeKtsRCC8xtOqsZsz9QEmB31Gz3QMilsmsyhjdZ5QUsc+VU/HJhON2pzk7xL+V8zupc/uDoeg9AS38lti2nid5WDLAdG8j1IAU7ox/tJnAs7NTti9XN2nTcHf9u7laQfEm7i4VaLkn6hHsXf7JTE5GBkTF2sbR0cpSnIi2fYbHlU6EIugTgwU0875enhRQiyHhb84QByTfxig0bXaMCMnHDkdjH41+HoKu5SGxoPOyKp/JDpQaPY3J56RFrp0j8tRlqpUYIU=</xenc:CipherValue></xenc:CipherData></xenc:EncryptedData></soapenv:Body>
    </soapenv:Envelope>

Le message de retour est

HTTP/1.1 401 Access Denied
Connection: close
Content-Length: 57
Content-Type: text/html
Cache-Control: no-cache,no-store
Pragma: no-cache

Error: Access is Denied. Client SSL Certificate Required.

Comment utiliser SSL n'est pas clair pour moi pour le moment.

Je suis sûr que j'ai fait quelques erreurs, quelqu'un peut-il m'orienter dans la bonne direction?

8
Tanc

C'est fait !

Info: Ma version SOAPUi est 5.0 J'ai décidé de ne pas utiliser un JKS comme keystore mais un fichier p12 uniquement

Voici ce que j'ai fait étape par étape

création de fichier PKCS12

Utilisation de mon fichier privatekey.pem (utilisé pour générer le fichier CSR) et de certificate.pem reçu (généré par leur partie à partir du fichier CSR précédent)

openssl pkcs12 -export -out certif.p12 -inkey myprivatekey.pem -in Certificate-received.pem

Sur question:

  • Enter pass phrase for myprivatekey.pem: j'ai saisi le mot de passe utilisé pour générer ma clé privée.
  • Enter export password: tenzin
  • Verifying - Enter Export Password: tenzin

Dans SOAP UI,

Dans les préférences,

  1. certif.p12 a été choisi comme magasin de clés.
  2. Le mot de passe donné est tenzin
  3. L'authentification client requise est cochée.

Ça marche.

8
Tanc