2015-05-29 18 views
6

Recentemente, ho dovuto migliorare le comunicazioni SOAP tra me e un servizio web. Dopo aver creato un file di chiave privata sul mio server e dopo che è stato creato/inviato CSR, è stato ricevuto un file di certificato in formato PEM.SOAPUno e keystore

Voglio testarlo in SOAPUi ma continua a dire che Errore: accesso negato. Certificato SSL client richiesto.

Ecco quello che ho fatto: conversione

  • Certificato

    openssl pkcs12 -export -out **certif.p12** -inkey **myprivatekey.pem** -in **Certificate-received.pem** 
    
  • Keystore importazione

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

In SoapUI,

0.123.

Sono andato a preferenze e in Impostazioni SSL Tab,

  • chiavi è stato impostato per essere pierrejks.jks la password

  • chiavi previsto: changeit

  • richiede cliente l'autenticazione era spuntata.

Sul progetto ora (Fare clic destro sulla radice del progetto quindi Visualizza Progetto View), sono andato a WS-Security Configurazioni, keystore scheda per aggiungere una nuova fonte.

  • origine è il percorso per pierrejks.jks di file
  • password è changeit
  • Defaults Alias ​​è impostato su pierrealias
  • No Alias ​​password fornita

Dopo aver riempito questi informazioni, stato diventato ok

Nelle Configurazioni WS-Security in uscita, è stata aggiunta una configurazione con una nuova codifica WSS-.

  • Configuration Name is pierreconf
  • tipo WSS L'ingresso è crittografia
  • Keystore scelto è pierrejks.jks
  • Alias ​​è
  • password è changeit

Infine, viene effettuata una richiesta di pierreconf profilo WSS in uscita e questo è erano ho l'errore. In questo momento, se ho capito bene, scheda RAW dimostra che è criptato:

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> 

messaggio di ritorno è

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. 

Come utilizzare SSL non è chiaro per me in questo momento.

Sono sicuro che ho fatto degli errori, qualcuno può indicarmi la giusta direzione?

+0

È necessario utilizzare il certificato fornito dal servizio web. Creare il tuo e solo usarlo è un po 'come cercare di sbloccare la tua auto con la chiave sbagliata –

+0

Ciao Tim. Grazie per la condivisione. Il certificato-received.pem è stato fornito da Apple per contattare il proprio servizio web.È stato creato dopo che un CSR è stato generato dalla mia parte (con il mio file di chiave privata) Non ho creato un nuovo file, ma è stato convertito in PKCS12 perché sembra che keytool non possa importare il file PEM direttamente all'interno di una chiavi. Pierre – Tanc

risposta

5

Fatto!

Info: La mia versione SoapUI è 5.0 ho deciso di non utilizzare un JKS come chiavi, ma file P12 solo

Ecco passo dopo passo quello che ho fatto

creazione del file PKCS12

Utilizzo del mio file privatekey.pem (utilizzato per generare il file CSR) e certificato.pem ricevuto (Generato da una parte fornita con file CSR precedente)

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

Su domanda:

  • Enter pass phrase for myprivatekey.pem: ho fatto inserire la password utilizzata per generare la mia chiave privata.
  • Enter export password: Tenzin
  • Verifying - Enter Export Password: Tenzin

In SOAP UI,

Nelle preferenze,

  1. certif.p12 è stato scelto come keystore.
  2. La password fornita è tenzin
  3. Richiede l'autenticazione del client selezionata.

Funziona.

+0

OK! Funziona anche per me. Nota che non devi aggiungere impostazioni di autorizzazione sulla richiesta, solo nelle preferenze globali! – MeanGreen

+0

Sembra esserci un problema utilizzando il provider di identità di jks keystore aus. Usando il PKCS # 12 funziona bene per il mio. Grazie – 0x0me