0

jdk1.4で書かれたWebアプリケーションを1.6に移植しています。sun.securityコンパイル中に、パッケージの廃止に関する警告が表示されます。警告付きでコンパイルすることもできますが、警告なしでコンパイルすることを好みます。また、jdk 1.7 バージョンを使用すると、これが将来エラーになる可能性があります。

警告は次のようなものです

warning: sun.security.util.DerEncoder is Sun proprietary API and may be removed in a future release

Sun パッケージを削除してソース コードを変更し、サード パーティの無料パッケージを使用する準備ができました。sun.misc.BASE64Decoder他のいくつかの問題を修正するために、 org.apache.commons.codecを使用してコードの他の部分 ( のようなクラスを使用) を書き直しましたsun.security.util

私のサーバーはApache Tomcatなので、他のサーバーライブラリを使用する*ibm*ことはできません。

編集

私は(に限定されない)を含むクラスを使用していますsun.security.util.DerEncoder, sun.security.util.DerInputStream ,sun.security.util.DerValue,sun.security.util.ObjectIdentifier ,sun.security.x509.X500Name etc

4

2 に答える 2

1

実際、sun.security.util.DerEncoderはインターフェイスであり、独自のバージョンを簡単に作成できます。困難な作業は、このインターフェイスを実装するクラスを見つけて処理することです。

価値があるのは、DerEncoder インターフェースが 1 つのメソッドを定義していることです。

  public void  derEncode(OutputStream out)
        throws IOException;

thisこのメソッドは、提供されたストリームにDER エンコーディングを出力することになっています。

DER は、ANS.1 データのコード化スキームです。私の知る限り、このインターフェイスは X.509 証明書などの Sun 実装の内部にあります。これを修正することは、単に代替クラスを見つけることではないと思います。むしろ、コードが (どうやら) このインターフェイスを使用している理由を理解し、必要なことを行うための「正しい」方法を理解する必要があると思います。(「正しい」...公開APIを使用する場合と同様。)

アップデート

使用している他のクラスに基づいて、X500 for Java 実装が必要だと思います。

  • 1つの可能性は、「Oracle Security Developer Tools Security Engine」(別名「Oracle Fusion Middleware Security Engine」)です。これは Oracle 10g および 11g 製品スイートの一部のようですが、個別に入手できる場合もあります。リンク: http://docs.oracle.com/cd/E23549_01/apirefs.1111/e10674/toc.htm

    私が知る限り、このようなものを無料で入手することはできません。さまざまな有料の Oracle 製品に組み込むことしかできません。

  • もう 1 つの可能性は、BouncyCastle X509 の実装です。


Java 6 は EOL になっているので、実際には Java 7 に移植する必要があることに注意してください。

于 2013-07-25T11:57:44.993 に答える
0

これらのクラスを本当に取り除く必要がある場合 (それらは 1.7 AFAICT にまだ残っています)、暗号化ライブラリの同等のコードでコード全体を書き直す必要があるでしょう。これを試してください:

http://www.bouncycastle.org/java.html

于 2013-07-25T12:11:12.187 に答える