2017-11-20 10 views
0

私はHTTPS SOAPサービスをmuleでプロキシしようとしています。そのため、APIマネージャーを使用し、そこにwsdl URLを指定しましたが、アプリケーションをデプロイするときにエラーが発生します。APIマネージャーを使用したSOAPプロキシサービス

Could not resolve placeholder 
'wsdl(p['wsdl.uri']).services[0].preferredPort.addresses[0].host' 
    in string value "<http:request-config name="http-request-config" 
    host="![wsdl(p['wsdl.uri']).services[0].preferredPort.addresses[0].host]" 
    port="![wsdl(p['wsdl.uri']).services[0].preferredPort.addresses[0].port]" protocol="HTTPS"> 
    </http:request-config> 

私はプロジェクトをダウンロードしました。wsdl.uriプロパティファイルにプロパティがあります。

UPDATE:

ちょうど私は、サンプルプロジェクトでは、以下のdataweaveを与えてみました何のwsdl関数が返すのアイデアを得るために。

#[dw(wsdl('https://myhost/check/checkrecieveAPI?WSDL'))] 

ただし、TLSが設定されていないため、次のエラーが発生しました。 wsdlにTLSを設定する方法が不明です。

sun.security.provider.certpath.SunCertPathBuilderException:二つの異なる問題があり

+0

以下の回答を見つけたら、問題を解決するために役立ちます。 –

答えて

1

要求されたターゲットへの有効な証明書パスを見つけることができません。

1.プロパティファイルからプロパティを読み取ることができません。

回答:Springコンテキストタグを使用して、プロパティファイルをコンテキストにロードする必要があります。

例:

<context:property-placeholder location="propetyFileName.properties" /> 
<flow name="myProject_flow"> 
<logger message="${propertyFromPropertyFile}" doc:name="System Property 
Set in Property File"/> 
</flow> 

は詳細についてはlinkを参照してください。

2.SSLハンドシェイク例外。

回答:

あなたが保護されたリソースにアクセスしようとしているので、あなたは、この例外を得ている、そしてこのリソースの有効な証明書を持っていませんが、あなたJDKに追加しました。

このため、あなたのミュール/スタジオで設定されているJDKを確認してください。

必要な証明書をJDKにインポートする必要があります。 Javaプログラムは、アプリケーション・サーバーなど、署名無効または自己証明書を持つサーバーに接続しようとすると

あなたがthis.Belowを行うことができますいくつかの方法がありますが、私が使用したアプローチの一つ、

です開発環境では、次の例外が発生することがあります。

javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIXパス構築に失敗しました:sun.security.provider.certpath。SunCertPathBuilderException:要求されたターゲットへの有効な証明書パスが見つかりません

Javaランタイム環境で証明書を信頼できるようにするには、JRE証明書ストアにインポートする必要があります。

ステップ1 - SSLを使用して、アプリケーションサーバーにブラウザストア

ブラウズに証明書を取得します。ブラウザは、証明書が信頼されていないと伝え、信頼できるようにして、ブラウザ証明書ストアに配置します。

ステップ2 - バイナリファイル

に証明書をエクスポートお使いのブラウザはエクスポートまたはバイナリファイルに特定の証明書をバックアップすることを可能にする証明書マネージャのいくつかの種類があります。 FirefoxではPreferences/Advanced/Encryption/Serversの下にあります。サーバーから提示された証明書を見つけ、バイナリDERファイルとしてエクスポートします。

ステップ3 - あなたはあなたのJREへの書き込みアクセス権を持っていることを確認しますJavaのストア

に証明書をインポートし、それをインポートするには、keytoolユーティリティを使用します。

のkeytool -import -alias別名-keystore path- -jre/lib/security/cacertsに-fileパスツー証明書ファイル

例:

のkeytool -import -alias NEWCERT -keystore /opt/jdk1.6/jre/lib/security/cacerts -file /home/newCert.der

キーストアのパスワードを要求されます(デフォルトではchangeitです)。

OR

あなたはリンクの下にそれをeasily.Check行うためのユーティリティのJavaベースのツールを使用することができます。 ​​

+0

Maheshにお返事ありがとうございます。回答1 - 私はプロジェクトをビルドしていない、そのノーポイントAPI自体は、それらのプロパティを持つプロジェクトを作成しています2 - 私のローカルでキーストアを持っていない私はすべてのhttps接続。だから私の疑問は、ここでwsdl( 'url')dataweave関数内のtlsを設定するか、HTTPSプロキシサービスを作成する他の方法があるかどうかです – Pathfinder

0

wsdl機能でTLSを設定します。 TLS Configuration要素は、モジュールまたはトランスポートから独立しています。 Mule 3.7以降では、HTTPコネクタとWebサービスコンシューマの両方でサポートされています。

この要素は、HTTPコネクタの[グローバル]コンフィグレーションエレメントのUI、[TLS/SSL]タブ、または[セキュリティ]タブの[Webサービスコンシューマ]のUIから作成できます。

tls:context要素は、クライアント側とサーバー側の両方から使用できるTLSの構成を定義します。他のモジュールの他の構成オブジェクトによって参照されることができます(またはそれらの1つのネストされた要素として定義されます)。

内部には、キーストアとトラストストアという2つのネストされた要素を含めることができます。両方を含める必要はありませんが、2つのうち少なくとも1つが存在する必要があります。

サーバー側から:トラストストアには信頼できるクライアントの証明書が含まれています。キーストアには秘密鍵と公開鍵が含まれています。サーバ。

クライアント側から:トラストストアには信頼できるサーバーの証明書が含まれています。キーストアには、クライアントのプライベートキーと公開キーが含まれています。

TLS構成にトラストストアまたはキーストアを追加すると、暗黙的に対応する種類の認証が実装されます。キーストアとトラストストアの両方を同一のコンフィグレーション(上記のコード例)に追加すると、相互認証とも呼ばれる双方向TLS認証が暗黙的に実装されます。

関連する問題