7

Web サービスを使用するために savon を評価しています... しかし、SOAP Web サービスを提供するサーバーに対して認証するために SSL クライアント側証明書を使用できるかどうかについての情報が見つかりません。ドキュメントを読みましたが、それについて何も見つかりませんでした。

SAVONがクライアント側の証明書認証をサポートしているかどうか知っている人はいますか?

よろしくフェイク

4

2 に答える 2

14

Savon の最新の安定バージョン (現時点では 2.2.0) は、グローバル オプションを介して SSL クライアント証明書をサポートしています。ドキュメントの SSL セクションを参照してください。

httpclient が httpi で使用されていると仮定した場合のコード例を次に示します。

savonConfig = {
    :namespace => "http://...com",
    :endpoint => 'https://...:557/x/b/c',
    #:wsdl => 'https://...:557/x/b/c?wsdl',
    :log_level => :debug,
    :log => true,
    :ssl_verify_mode => :none,
    :ssl_cert_file => 'publicCert.pem',
    :ssl_cert_key_file => 'privateKey.pem',
    :ssl_cert_key_password => '1234',
    :open_timeout => 600,
    :read_timeout => 600
}

client = Savon.client savonConfig

soapBody = {
...
}


calcResponse = client.call(:charge, :message => soapBody)

pfx 証明書/キー ファイルがある場合、それを直接使用すると問題が発生する可能性があります。そのため、それらを個別のファイルに分割することをお勧めします。詳細については、このページを参照してください: SSH で後で使用するために、PKCS12 ファイルから公開/秘密キーを抽出します。 PK認証

それが役立つことを願っています!
ダニエル

于 2013-06-29T17:00:01.157 に答える
2

savon クライアントを ssl クライアント認証で動作させようとして問題が発生していますが、同時にホスト検証をバイパスしています....

https://github.com/savonrb/savon/issues/679

client = Savon.client(log_level: :debug,
log: true,
ssl_verify_mode: :none,
ssl_cert_file: (Rails.root + 'signed.cer').to_s,
ssl_cert_key_file: ('private.key').to_s,
wsdl: "https://example.com/Service?wsdl",
endpoint: "https://example.com/Service")

Like HTTPI GET request to wir.dhswir.org (net_http) HTTPI::SSLError: SSL_read: ssl handshake failure で失敗する

萌え情報はありません..

savon 2.2.0、2.3.0、および 2.11.0 を試しました。エラーメッセージはわずかに異なります。

同じ PEM 形式のキーと証明書を savon に使用し、UNIX WGET を使用して比較しています。--no-check-certificate を渡さないと WGET は失敗しますが、それを追加すると、パスして ssl クライアント認証を実行してアクセスできるようになります

wget 'https://example.com/CDC/VaccinationService?wsdl'  --certificate=example-int-wi-signed.cer --private-key=private.key -O- --no-check-certificate
于 2015-04-07T21:35:32.910 に答える