JBoss 6 Datasourceデータソース暗号解読メカニズム
8167 ワード
一、JBossの下でデータソースを配置する時、パスワードが直接システムのオペレーターあるいはメンテナンス人員に露出した場合、明らかにデータベースの安全でない要素を増加した.
MySQLデータソース構成サンプル
心配しないで、JBoss自身はパスワードを暗号化するツールorgを提供した.jboss.resource.security.SecureIdentityLoginModule
Windowsでは、パスワードの暗号化文字列を次のコマンドで取得できます.
二、暗号化されたパスワードを入手すれば暗号化できるデータソースの配置
1.MySQLデータソースの構成
2.login-configを構成する.xml(通常はsrcmainresourcesMETA-INFディレクトリの下に置く)
3.jboss-serviceを構成する.xml(一般的にはsrcmainresourcesMETA-INFディレクトリの下に置かれています.EJBでDynamicLoginConfigを実現していますが、より便利な案を提供してほしいです)
三、最後にJBoss暗号化ツールの暗号化を解読するパスワードを紹介します
1.SecureIdentityLoginModuleのあるパッケージD:JBossjboss-6.1.0を見つける.Final\lib\jbosssx.jar
見つけたclass、逆コンパイルで全部わかりました
暗号化は、private static String encode(String secret)を使用します.
自然復号化:private static char[]decode(String secret)
注意:逆コンパイルツールJDGUIを推奨
2.Eclipseでパッケージを新規作成
org.jboss.resource.Security,新規
SecureIdentityLoginModule.JAvaと
PasswordDecoder.java SecureIdentityLoginModule.JAva(このクラスはPasswordDecoderコンパイルを通過させるためだけで、実際の意味はありません)
PasswordDecoder.JAva(利用
反射呼び出しSecureIdentityLoginModuleのprivate static char[]decode(String secret)メソッド)
3.コンパイルされたPasswordDecoder.classはD:JBossjboss-6.1.0に置く.Final\lib\jbosssx.JAr中orgjbossresourcesecurity下(悪いことをする前にバックアップ)
4.復号
Windowsでは、暗号文の復号文字列を次のコマンドで取得します.
転載は出典を明記してください.http://blog.csdn.net/w709854369/article/details/7642503
MySQLデータソース構成サンプル
MSSQLDS
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyDatabase
com.microsoft.sqlserver.jdbc.SQLServerDriver
admin
password
MS SQLSERVER2000
心配しないで、JBoss自身はパスワードを暗号化するツールorgを提供した.jboss.resource.security.SecureIdentityLoginModule
Windowsでは、パスワードの暗号化文字列を次のコマンドで取得できます.
D:\JBoss\jboss-6.1.0.Final>java -cp client\jboss-logging.jar;lib\jbosssx.jar org.jboss.resource.security.SecureIdentityLoginModule password
Encoded password: 5dfc52b51bd35553df8592078de921bc
二、暗号化されたパスワードを入手すれば暗号化できるデータソースの配置
1.MySQLデータソースの構成
MSSQLDS
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyDatabase
com.microsoft.sqlserver.jdbc.SQLServerDriver
EncryptDBPassword
MS SQLSERVER2000
2.login-configを構成する.xml(通常はsrcmainresourcesMETA-INFディレクトリの下に置く)
admin
5dfc52b51bd35553df8592078de921bc
jboss.jca:service=LocalTxCM,name=MSSQLDS
3.jboss-serviceを構成する.xml(一般的にはsrcmainresourcesMETA-INFディレクトリの下に置かれています.EJBでDynamicLoginConfigを実現していますが、より便利な案を提供してほしいです)
META-INF/login-config.xml
jboss.security:service=XMLLoginConfig
jboss.security:service=JaasSecurityManager
三、最後にJBoss暗号化ツールの暗号化を解読するパスワードを紹介します
1.SecureIdentityLoginModuleのあるパッケージD:JBossjboss-6.1.0を見つける.Final\lib\jbosssx.jar
見つけたclass、逆コンパイルで全部わかりました
暗号化は、private static String encode(String secret)を使用します.
自然復号化:private static char[]decode(String secret)
注意:逆コンパイルツールJDGUIを推奨
2.Eclipseでパッケージを新規作成
org.jboss.resource.Security,新規
SecureIdentityLoginModule.JAvaと
PasswordDecoder.java SecureIdentityLoginModule.JAva(このクラスはPasswordDecoderコンパイルを通過させるためだけで、実際の意味はありません)
package org.jboss.resource.security;
public class SecureIdentityLoginModule {
private static String encode(String secret) {
return secret;
}
private static char[] decode(String secret) {
System.out.println("Input password: " + secret);
return new char[] { '0', '1', '2', '3', '4', '5' };
}
}
PasswordDecoder.JAva(利用
反射呼び出しSecureIdentityLoginModuleのprivate static char[]decode(String secret)メソッド)
package org.jboss.resource.security;
import java.lang.reflect.Method;
/**
* Decode the encoded password.
*
* @author
*
*/
public class PasswordDecoder {
public static void main(String args[]) throws Exception {
Class cla = SecureIdentityLoginModule.class;
Method m = cla.getDeclaredMethod("decode", String.class);
m.setAccessible(true);
Object obj = m.invoke(null, args[0]);
char[] chars = (char[]) obj;
System.out.println("Decoded password: " + new String(chars));
}
}
3.コンパイルされたPasswordDecoder.classはD:JBossjboss-6.1.0に置く.Final\lib\jbosssx.JAr中orgjbossresourcesecurity下(悪いことをする前にバックアップ)
4.復号
Windowsでは、暗号文の復号文字列を次のコマンドで取得します.
D:\JBoss\jboss-6.1.0.Final>java -cp client\jboss-logging.jar;lib\jbosssx.jar org.jboss.resource.security.PasswordDecoder 5dfc52b51bd35553df8592078de921bc
Decoded password: password
転載は出典を明記してください.http://blog.csdn.net/w709854369/article/details/7642503