内部 CRM と通信するように Play をセットアップしようとしています。以前のアプリはすべて過剰な JSF フレームワーク (ICEfaces) で作成されていますが、JSF アプリは Glassfish ボックスにデプロイされ、glassfish が通信できるようにするための証明書がインストールされていたため、CRM との通信には問題なく機能していました。当社の CRM Web サービス。
今、同じことをするために play を取得しようとしていますが、netty で play アプリを実行したいので、少し苦労しています。CRMと通信できるように、証明書をキーストア(または同様のもの)にインポートするにはどうすればよいですか? CRM は社内にあるため、証明書は自己署名され、必要に応じて配布されます。
プレイ構成ファイルで次のことを試しましたが、これらの構成プロパティは、プレイアプリが別のサービスと通信するためではなく、プレイサーバー自体のためのものであるように見えるため、これについてはわかりません。
# Keystore
trustmanager.algorithm=jks
ssl.KeyManagerFactory.algorithm=SunX509
keystore.algorithm=jks
keystore.password=changeit
keystore.file=conf/cacerts.jks
他の開発者の 1 人がこれを機能させることができましたが、コードに直接配置する必要があり、理想的ではありませんでした。
System.setProperty("javax.net.ssl.trustStore", "C:/webapps/playapp1/cacerts.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "jks");
System.setProperty("javax.net.ssl.keyStore", "C:/webapps/playapp1/keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
注として、私たちの CRM は、JSF にドロップする jar ファイルを作成するか、Web サービスをラップする再生アプリを作成するので、サービスごとにクライアント コードを作成する必要はありません (たとえば、ダウンロードする jar に似ています。 Amazon の S3 サービス)。そのサービス jar は下にある Jersey を使用して、XML/Rest を介してサービスに通信します。SSL を使用していないときは、play フレームワークで問題なく動作します。