web-dev-qa-db-ja.com

SOAPUiとキーストア

最近、私はSOAP私とWebサービス間の通信を強化する必要がありました。サーバーで秘密鍵ファイルを作成し、CSRを作成/送信した後、PEM形式の証明書ファイルを受け取りました。

SOAPUiでテストしたいのですが、エラー:アクセスが拒否されました。クライアントSSL証明書が必要ですと言い続けています。

ここで私がやったこと:

  • 証明書の変換

    openssl pkcs12 -export -out **certif.p12** -inkey **myprivatekey.pem** -in **Certificate-received.pem**
    
  • キーストアのインポート

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

SOAPUiでは、

設定およびSSL設定タブに行きました。

  • キーストアはpierrejks.jksに設定されました

  • 提供されたキーストアのパスワード:changeit

  • クライアント認証がチェックされている必要があります。

今プロジェクトで(プロジェクトのルートを右クリックしてからプロジェクトビューを表示)、WS-Security Configurationskeystoreタブに移動して新しいソースを追加しました。

  • ソースはpierrejks.jksファイルへのパスです
  • パスワードはchangeitです
  • デフォルトのエイリアスはpierrealiasに設定​​されています
  • エイリアスパスワードが提供されていません

これらの情報を入力した後、statusは大丈夫になりました

Outgoing WS-Security Configurationsで、新しいWSS-Entry Encryptionで構成が追加されました。

  • 構成名はpierreconfです
  • WSSエントリタイプは暗号化です
  • 選択されるキーストアはpierrejks.jksです
  • エイリアスは1
  • パスワードはchangeitです

最後に、リクエストがpierreconf Outgoing WSS profileで行われますが、これはエラーが発生した場合です。この時点で、正しく理解していれば、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の使用方法は明確ではありません。

私は間違いを犯したと確信していますが、誰かが私を正しい方向に向けることができますか?

8
Tanc

やった!

情報:私のSOAPUiバージョンは5.0です。キーストアとしてJKSを使用せず、p12ファイルのみを使用することにしました。

ここに私がやったことのステップバイステップがあります

PKCS12ファイルの作成

Privatekey.pemファイル(CSRファイルの生成に使用)とcertificate.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テンジン

In SOAP UI

設定で、

  1. certif.p12がキーストアとして選択されました。
  2. 指定されたパスワードはtenzinです
  3. クライアント認証が必要です。

できます。

8
Tanc