2015-05-29 3 views
6

Недавно мне пришлось улучшить связь SOAP между мной и веб-сервисом. После создания файла закрытого ключа на моем сервере и после того, как CSR была создана/отправлена, файл сертификата был получен в формате PEM.SOAPUi и хранилище ключей

Я хочу проверить его в SOAPUi, но он продолжает говорить, что Ошибка: доступ запрещен. Требуется сертификат SSL клиента.

Вот что я сделал: преобразование

  • Свидетельство

    openssl pkcs12 -export -out **certif.p12** -inkey **myprivatekey.pem** -in **Certificate-received.pem** 
    
  • Keystore импорт

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

В SoapUI,

я пошел предпочтения и в Настройки SSL Tab,

  • хранилища ключей был установлен на pierrejks.jks

  • пароль хранилища ключей, предоставленные: changeit

  • требует клиента аутентификация была отмечена.

О проекте сейчас (щелкните правой кнопкой мыши на корень проекта затем Show View Project), я пошел в WS-Security Configurations, хранилища ключей вкладку, чтобы добавить новый источник.

  • Источник путь к pierrejks.jks файл
  • пароля changeit
  • Defaults Алиас установлен в pierrealias
  • Нет Алиас пароль, предоставленные

После заполнения этих информация, состояние стало нормально

В Исходящие конфигурации WS-Security, была добавлена ​​конфигурация с новым WSS-Entry Encryption.

  • Имя Конфигурация pierreconf
  • тип WSS запись Шифрование
  • Keystore Выбирается является pierrejks.JKS
  • алиас
  • пароль changeit

Наконец, запрос сделан с pierreconf Исходящий профиль WSS и это был я есть ошибки. На данный момент, если я правильно понимаю, вкладка RAW показывает, что он зашифрован:

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> 

Вернуться сообщение

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. 

Как использовать SSL не ясно для меня на данный момент.

Я уверен, что допустил некоторые ошибки, может ли кто-нибудь указать мне в правильном направлении?

+0

Вам необходимо использовать сертификат, предоставляемый веб-службой. Создание собственного и просто использование его немного похоже на попытку разблокировать ваш автомобиль с неправильной клавишей –

+0

Привет Тим. Спасибо, что поделился. Сертификат-received.pem был предоставлен Apple, чтобы связаться со своим веб-сервисом.Он был создан после создания CSR на моей стороне (с моим личным файлом) Я не создавал новый файл, но был преобразован в PKCS12, потому что кажется, что keytool не может импортировать файл PEM непосредственно внутри Хранилище ключей. Pierre – Tanc

ответ

5

Выполнено!

Информация: Мой SoapUI версия 5.0 я решил не использовать JKS в качестве хранилища ключей, но файл p12 только

Вот шаг за шагом, что я сделал

создание PKCS12 файла

Использование моего файла privatekey.pem (используется для генерации файла CSR) и полученного сертификата.pem (сгенерировано сторонним участником, указанным в предыдущем файле CSR)

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

На вопрос:

  • Enter pass phrase for myprivatekey.pem: я сделал ввести пароль, используемый для создания моего закрытого ключа.
  • Enter export password: Тензин
  • Verifying - Enter Export Password: Тензин

В SOAP UI,

В предпочтениях,

  1. certif.p12 был выбран как хранилище ключей.
  2. Указанный пароль tenzin
  3. Требуется проверка подлинности клиента.

Это работает.

+0

Хорошо! Он работает и для меня. Обратите внимание, что вам необязательно добавлять параметры авторизации в запросе только в глобальных настройках! – MeanGreen

+0

У вас возникла проблема с помощью jks keystores aus identity provider. Использование PKCS # 12 отлично подходит для моего. благодаря – 0x0me

Смежные вопросы