問題タブ [truststore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java Webstart トラストストア SSL
いくつかのガイダンスが必要です。
私はJava Webstartアプリを持っていて、SSL経由でサーバーに接続したい.次のようなプロパティを追加するだけです:System.setProperty("javax.net.ssl.trustStore","my.keystore");しかし、JAWSプログラムはサーバーからのダウンロードは機能せず、ローカル ファイル システムに my.keystore がありません。そこで、証明書をすべてのクライアントに配布することにしました。次のことを行ったところ、うまくいきました。
- このトラスト ストアをストリームとして読み取ります (getResourceAsStream メソッドを使用します)。
- クライアント マシン上の任意のファイルに保存します (sometemp)。
- System.setProperty ("javax.net.ssl.trustStore", trustStorePath) を呼び出します。
しかし、これよりも優れた解決策があるに違いないと確信しています..それを改善するためのアイデアはありますか?
-Padur ===========================**=============
* */
Laz は、時間ができたときに学習しようとして、忍耐に感謝します。私は独自の CustomSSLSocketFactory を書き始めました..今、私はセキュリティをバイパスしています...プラチナソリューションの例に基づいています.そうすると...情報はネットワーク上でクリアテキストとして渡されますか?
「sometruststore.jks」ファイルを持っているトラストストアファイルをどうすればいいのだろうか。それをどうすればいいですか..独自のカスタムトラストマネージャーソフトウェアを作成していますか? 正しい方向に私を導いてください。
-パドゥール
java - トラストストアの権限チェーンの設定にヘルプが必要 (Tomcat で)
リードイン ... 私は SSL を介したアプリケーション セキュリティの専門家ではありませんが、本番環境で発生する可能性のあるすべてのシナリオを含むテスト環境を確立しようとしています。このために、さまざまなテスト クライアント証明書の発行者である認証局 (CA) のツリーと、ノード/サーバー証明書 (公開されているさまざまな Web サービスと統合する他のアプリケーションを表す複雑なテスト環境) があります。
これらの CA の構造は次のとおりです。サブ CA1、サブ CA2、およびサブ CA3 を署名/発行したルート CA。これらのサブは、環境内のさまざまなノードとクライアントのすべての証明書に署名/発行しています。
ここで質問です....私のアプリケーションのトラストストアでは、Sub CA1 と Sub CA2 によって署名されたすべてのものを信頼したいと思いますが、Sub CA3 (信頼されていない) は信頼したくありません。これは、トラストストアに (1) サブ CA1 とサブ CA2 のみを含める必要がある、または (2) ルート CA、サブ CA1、およびサブ CA2 を含める必要があるということですか?
このトラスト チェーンをトラストストアで表現する適切な方法がわかりません。将来的には、サブ CA4 (ルート CA によって署名/発行されたもの) も追加したいと考えていますが、それをテスト目的で証明書失効リスト (CRL) に追加したいと考えています。
事前に、これに関するご協力に感謝します。大変感謝しています。
java - Java SSL クライアント アプリケーションで複数のトラストストアをサポートする方法
Java アプリケーションでは、https プロトコルを使用して SSL 上のサーバーのリストと通信する必要があります。通信するサーバーのリストは、実行時に変更されます。最初は、サーバーの証明書はありません。実行時に、新しいサーバーの証明書を取得し、公開鍵証明書をトラストストアに追加します。また、サーバーとの新しい https 接続はすべて、更新されたトラスト ストアを使用する必要があります。
1 つは cacerts (jre に付属するデフォルトのもの) で、もう 1 つはリストで動的に追加/削除するサーバーの証明書を含む 2 つのトラスト ストアを使用する必要があると考えています。これにより、Java のデフォルトの TrustStore (cacerts) を変更しないことが保証されます。
これを達成する方法を提案してください。また、特定のトラスト ストアを Java の特定のスレッドにのみ使用する方法はありますか? そのため、他の (既存および新規の) スレッドは引き続きデフォルトの Java trueststore(cacerts) を使用する必要があり、1 つの特定のスレッドが特定のトラストストアを使用します。サーバー。
ありがとう、ディーパック
java - StartCom CA 証明書を Windows JRE にインポートする
StartCom SSL 証明書を使用するサービスにアクセスする Java アプリケーションがあります。これが機能するには、StartCom CA 証明書を Java のトラストストアに追加する必要があります。これは、デフォルトではまだそこにないためです。これらのコマンドを使用してLinuxで成功しました
(このスクリプトから)
ただし、同じコマンド (適切に調整されたもの) は Windows では機能しません。私は得る:
それを機能させる方法は?
jakarta-ee - JBoss は、再起動せずに証明書トラストストアをリロードします
再起動せずに JBoss 4.2 で証明書トラストストアを「リロード」する方法はありますか?
EJB に ssl を使用してリモート サーバー上の Web サービスを呼び出させようとしていますが、以下の記事にあるように SSLHandshakeException で同様の問題が発生しています。私たちがやろうとしていることは次のとおりで、3 台のマシンが関係しています。A は、サーバー B と C に対する Web サービス クライアントとして機能する JBoss サーバーです。
1) A で、ユーザーは B のホスト名を入力します。A のマシンは B の自己署名証明書を取得し、それをトラスト ストアにインストールします (外部シェル スクリプトを介して)。
2) SSL ソケット接続が B に対して行われ、この最初の試行で証明書ストアがロードされたように見えます。接続は成功し、すべてが機能します。
3) 再び A で、ユーザーは 2 と同じことを行います。シェル スクリプトは C の証明書を取得し、トラストストアにインストールします。ただし、C への試行された接続では、(javax.net.debug=ssl を有効にすることにより) トラストストアが「リロード」されていないように見え、C の証明書が見つからず、SSLHandshakeException が発生します。
JBoss を再起動すると、「更新された」トラストストアがロードされ、B と C の両方への接続が機能します。
JBoss を再起動せずにこれを行い、上記のスキームを収集したいのですが、正しくありません。誰かがトラストストアを動的に更新する正しい方法のドキュメントを教えてくれれば、非常にありがたいです。
java - JavaMail:別のトラストストアを使用したポート 25 での TLS は可能ですか?
TLS を使用してポート 25 (SSL なし) で JavaMail を使用してメールを送信しようとしていますが、独自のトラストストアを使用しています (元の cacerts トラストストアには必要な証明書が含まれておらず、Java のデフォルトのトラストストアを変更したくないため)。 . システムトラストストアを使用してTLSを使用してメールを送信できるコードを持っています。
プロパティ、また、設定
接続が安全に機能するようになったときに正しいトラストストアを指すようにします。通常のポート 25 であるため、 socketFactoryプロパティ (および実装)をセットアップする必要もありません。システムのトラストストアを使用して、ポート 25 で TLS を使用してメールを送信できます。
ただし、システム プロパティを切り替えて正しいトラスト ストアを設定できるようにするのは、特にサーバー上ではちょっとばかげています。一般:システムトラストストア( cacertsファイル、そのコピーを作成してコピーを変更することは問題ありません!)も、現在それをセットアップするために必要なシステムプロパティも変更しない別の解決策を探しています。
私がすでに試したこと:
独自の SSL socketFactoryをセットアップし、独自のキー マネージャーを使用して別のトラストストアをロードします。これは、ポート 25 で送信する必要がない場合に完全に機能しますが、代わりにポート 465 で安全な接続を開始できます。ただし、保護されていないメールサーバーに安全に接続しようとしています。
独自のsocketFactoryをセットアップしようとしていますが、実際の通信には通常のソケットを使用しています。これは基本的に、自分の socketFactory をまったく使用しないのと同じであり、システムの cacerts trustStore ファイルを使用して Java を使用することになります。
cacertsシステム トラストストア ファイルを変更します。これは機能しますが、システムの信頼ストアを変更したくありません。書き込み権限がないか、キーストアのパスワードが変更される可能性があります。
"javax.net.ssl.trustStore"
自分のトラストストア ファイルを指すようにシステム プロパティを変更します。うまく機能しますが、システム プロパティも変更したくありません。なぜなら、私のコードはサーバー上で実行され、そこで実行される他のコードがわからず、プロパティをそのままにしておく必要があるからです。以前の状態を保存して復元しても、変更時にこのプロパティを使用する他のスレッドを実際に保護することはできないため、このソリューションはあまり好きではありません。
要するに、ポート25でメールサーバーへの安全でない接続を使用し、TLSをオンにして(メールプロパティを設定することにより)、これにより接続が内部的に保護され、独自のトラストストアファイルを使用する方法を知っている人はいますかcacerts やシステム プロパティを変更せずに? おそらく、非安全な接続が安全になったときにのみ使用される socketFactory プロパティと同様の方法がありますか?
iphone - アプリケーションキーチェーンへの証明書チェーンの保存
iOSでは、SecTrustEvaluate()を使用して信頼を評価できることを知っています。信頼を作成するには、*。p12ファイルから信頼をインポートするか、証明書の配列と一連のポリシーを使用して信頼を作成します。
また、デフォルトで信頼されていないサーバーが信頼されていることを確認するために、SecTrustSetAnchorCertificates()を使用して、SecTrustEvaluate()がサーバーの証明書を検証するために使用するルートCAのリストを拡張できることも知っています。
では、これらのアンカー証明書が後続の起動で使用可能であることを確認するにはどうすればよいですか?証明書、キー、およびIDをアプリケーションのキーチェーンに保存できますが、証明書チェーンには保存できません。すべての証明書をチェーンに格納している場合でも、アンカー証明書として使用される証明書をどのように知ることができますか?
頭に浮かぶ解決策の1つは、キーチェーンからすべての証明書を取得し、それらをアンカー証明書として設定することです。もう1つの方法は、ディスク上のすべての証明書チェーンを* .p12ファイルとして実行し、アプリケーションの実行ごとに1回ロードすることです。
java - Exchange EWS のプロキシ クラスを生成できませんでした: 要求されたターゲットへの有効な証明書パスが見つかりません
EWS のプロキシ クラスを生成したい ( http://msdn.microsoft.com/en-us/library/dd877045%28v=exchg.140%29.aspx )。
しかし、次のエラー メッセージが表示されます。
java - 複数のホストの証明書を持つTrustore
httpsを介してサーバー(「A」)に接続するアプレットを使用した動作デモがあります。サーバーの証明書チェーンは、JKSトラストストア(myTrustManagerFactory.init(mytrustStore.jks))を介してアプレットによってロードされます。正常に動作します。
ここで、httpsを介して別のサーバー(「B」)に接続するためにもこのアプレットが必要です。サーバーの証明書は、自己署名CAによって署名されています。したがって、この自己署名CAをアプレットTrustManagerFactoryに渡す必要があります。
サーバー「A」に使用されているものと同じJKSトラストに入れることはできますか?その場合、2番目のエイリアスを使用してこの自己署名CAを保存する必要がありますか?それを試しましたが、サーバー「B」に接続するとエラーが発生します。TrustManagerFactoryにサーバー「B」エイリアスを指定する方法はありますか?
2番目のサーバーを呼び出す前に2番目のJKS、またはSSLコンテキストを「リセット」する必要がありますか?
助けてくれてありがとう、
ロドルフ
java - 認証なしのJavaセキュアソケット?
簡単なセキュア ソケット サーバー クライアント プログラムがあります。
サーバー証明書用に、keytool を使用してキーストアを作成しました。
クライアントからサーバーに接続しようとすると、次の例外が発生し
ます: サーバー内:
クライアントで:
私の理解が正しければ、これらの例外は、作成した証明書を使用しているという事実が原因で発生します。
私の質問は次のとおりです。
サーバーとクライアントの両方で有効な暗号スイートを設定すると、すべての *_anon* 暗号スイートが問題を解決するはずではありませんか?
つまり、暗号スイートを有効にすると、*_anon_*
認証は不要になるため、例外はありません。
これは正しいです?
まだ例外が発生するためです。有効な暗号スイートに、すべての有効な暗号スイートと _anon のものを入れてみました。失敗。anonのものだけを設定しようとしましたが、新しい例外が発生しました:
anon暗号スイートでこれらの例外が発生する理由を誰かが説明してもらえますか?
注:作成したキーストアを指し、サーバーで使用されている
システム プロパティをクライアントに設定すると、通信は正常に行われます。
プログラムは例外なく動作し、データはクライアントからサーバーに正常に送信されます。 javax.net.ssl.trustStore
更新:
これは、anon 暗号を有効にするために使用するスニペットです (サーバーとクライアントの部分でこれを行いました)。
スタック トレースはクライアント側にあります。
サーバー側では:
今私が単純に行うと:
anon暗号スイートのみが有効になるように、次のようになります。
ありがとうございました