加密加密属性文件中的密码

2023-11-29

Problem

我正在使用 Apache CXF 3.0.7,并在新功能您可以在加密属性文件中存储密钥库密码的(BASE-64 编码)加密版本,但我不知道如何添加它,我没有找到此实现的示例。

在 apache web 中说:

加密属性文件内容的典型示例(例如 签名创建)如下:

 org.apache.wss4j.crypto.provider=org.apache.wss4j.common.crypto.Merlin
 org.apache.wss4j.crypto.merlin.keystore.type=jks
 org.apache.wss4j.crypto.merlin.keystore.password=security
 org.apache.wss4j.crypto.merlin.keystore.alias=wss40
 org.apache.wss4j.crypto.merlin.keystore.file=keys/wss40.jks 

请注意,用于加载密钥库的密码是明文形式。新的之一 Apache WSS4J 2.0.0 的功能是能够存储 (BASE-64 编码)密钥库密码的加密版本 加密属性文件。定义了新的PasswordEncryptor接口 允许加密/解密密码。默认的 现在提供基于 Jasypt 的实现,称为 JasyptPasswordEncryptor,使用“PBEWithMD5AndTripleDES”。

WSPasswordCallback 类有一个额外的“用法”,称为 WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD,用于 返回与PasswordEncryptor一起使用的主密码 执行。当 WSS4J 通过加载 Crypto 实现时 属性文件,并且遇到以以下格式加密的密码 “ENC(编码加密密码)”,它向 CallbackHandler 查询 通过此 WSPasswordCallback 使用标记获取密码。是可以通过的 通过新的 WSS4J 的自定义 PasswordEncryptor 实现 配置标签ConfigurationConstants.PASSWORD_ENCRYPTOR_INSTANCE (“密码加密实例”)。

可以将自定义的PasswordEncryptor实现传递给 WSS4J 通过新的配置标签 ConfigurationConstants.PASSWORD_ENCRYPTOR_INSTANCE (“密码加密实例”)。

我想我必须在我的属性文件中声明类似的内容:

org.apache.wss4j.crypto.merlin.keystore.password=ENC(?????)

但我不知道如何使用默认实现的 JasyptPasswordEncryptor 来加密我的密码。 另外,我想在我的 CallbackHandler 中我会有类似的东西:

if (usage==WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD){
                ????
    }

Solution

好的,随着测试的运行,我测试了我的解决方案,现在正在工作。

  1. 下载jasypt-1.9.2-dist.zip
  2. 使用此命令获取编码密码 加密输入=real_keystore_password 密码=master_password 算法=PBEWithMD5AndTripeDES
  3. 复制输出(例如:0laAaRahTQJzlsDu771tYi)
  4. 当您使用此算法时,您需要 Java 加密扩展 (JCE) 无限强度。放入你的 JDK。
  5. 将编码输出放入属性中

    org.apache.wss4j.crypto.provider=org.apache.wss4j.common.crypto.Merlin org.apache.wss4j.crypto.merlin.keystore.type=jks org.apache.wss4j.crypto.merlin.keystore.password=ENC(0laAaRahTQJzlsDu771tYi) org.apache.wss4j.crypto.merlin.keystore.alias=my_alias org.apache.wss4j.crypto.merlin.keystore.file=/etc/cert/my_keystore.jks

  6. 在 CallbackHandler 中,输入用于生成编码密码的 master_password:

    公共类 WsPasswordHandler 实现 CallbackHandler {

    @Override
    public void handle(Callback[] callbacks) throws IOException,
            UnsupportedCallbackException {
        for (Callback callback: callbacks){
            WSPasswordCallback pwdCallback= (WSPasswordCallback) callback;
            final int usage =pwdCallback.getUsage();
            if (usage==WSPasswordCallback.SIGNATURE||usage==WSPasswordCallback.DECRYPT){
                pwdCallback.setPassword("parKeyPassword");
            }
            if (usage==WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD){
                pwdCallback.setPassword("master_password");
            }
        }           
    }
    

    }

就是这样......现在我必须弄清楚如何在外部 local.property 中使用 Spring 等等来使其工作......但这是另一段历史......谢谢!


该测试应该可以帮助您:https://svn.apache.org/repos/asf/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/PasswordEncryptorTest.java

您可以通过使用主密码实例化 JasyptPasswordEncryptor 来获取加密密码(如测试中所示),并对密钥库密码进行加密。然后将其复制到您的加密属性中:

https://svn.apache.org/repos/asf/webservices/wss4j/trunk/ws-security-dom/src/test/resources/crypto_enc.properties

Colm.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加密加密属性文件中的密码 的相关文章

随机推荐

  • iPhone iOS/Safari 上 HTML 输入类型编号的显示缺陷

    我想在移动应用程序上使用 HTML input type number 以便向更智能的手机 Android iPhone 和其他一些手机 表明 数字键盘比普通键盘对用户来说更有趣 这很好用 所以 我这里有这段 HTML h3 type nu
  • 如何在 MATLAB 中向数组追加元素?

    我想附上我的elem到数组的末尾A 我应该怎么办 使用以下内容 A A elem for row array or A A elem for col array 编辑 另一种更简单的方法是 正如 BenVoigt建议的那样 使用end关键词
  • android.content.res.Resources$NotFoundException

    Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R layout screen
  • 将 CodeMirror 添加到自定义元素的 Shadow Dom 中?

    我想在自定义元素内动态创建一个 CodeMirror 实例 并将其存在于元素的 Shadow DOM 内 例如
  • C 循环打印字符串两次? (使用 scanf("%c"))

    很抱歉这个可能很愚蠢的问题 但我想练习一下循环并提出了这个想法 基本上它会要求你进入或不进入循环 当你进入时 它会要求你做一些事情 问题就在我进入循环之后 它会打印两次 printf 字符串 然后传递给 scanf 字符串并等待输入 我想不
  • 来自 C# linq 的 json 父节点中的动态值

    我需要动态设置父节点的值 我正在使用 LINQ 获取数据表中的结果 你能帮忙吗 数据表数据 Key Value filetype Sorry UNDSKYLD Associate
  • 从未收到 GKMatchmaker findMatchForRequest 邀请

    我正在尝试邀请附近的玩家参加比赛 但邀请要么从未发送 要么从未收到 GKMatchMaker startBrowsingForNearbyPlayersWithHandler 可以工作并返回使用同一 wifi 的附近玩家 但随后我使用 fi
  • Neo4J 查询时出现 OutOfMemory 错误

    我最近开始使用 Neo4J 到目前为止我还无法找到我遇到的问题的答案 特别是服务器方面的问题 我使用的是 1 8 1 版本 并将服务器作为 Windows 上的服务运行 而不是嵌入的 我的图表有大约 700 万个节点和近 1100 万个关系
  • 如何从 PHAsset 获取 ALAsset URL?

    您可以使用以下方法偷偷地做 无证的 PHAsset ALAssetURL财产 但我正在寻找有记录的东西 在 Objective C 中 这会有所帮助 interface PHAsset Sneaky property nonatomic r
  • 上传失败:您的免安装应用 APK 应至少包含一个基本 APK

    我需要为即时应用程序准备 Alpha 测试 它在 Android Studio 上运行起来就像一个魅力 但当我尝试将其上传到 PlayStore 时它失败了 说 上传失败 您的免安装应用 APK 应至少包含一个基本 APK 应用程序结构使用
  • 将 UDP 输入传送到 FFMPEG

    摄像机正在本地端口上通过 UDP 以 RTP 形式向我发送视频数据 ffmpeg 是否支持将输入 H 264 有效负载 自动转换为 MP4 怎么做 这应该有效 ffmpeg i udp localhost 1234 vcodec copy
  • 如何在Python中有效地检查给定的IP地址是否属于IP子网?

    我有一组大约 200 000 个 IP 地址和 10 000 个 1 1 1 1 24 形式的子网 对于每个 IP 地址 我需要检查它是否属于这些子网之一 但由于它是一个如此大的数据集 而且我的计算能力较低 我希望对此有一个有效的实现 在搜
  • mysql存储过程从表中设置值

    我有一个简单的表如下 mysql gt select from version id version 1 1 1 row in set 0 00 sec 我需要创建一个存储过程 它将根据该表的值 准确地说 该表的唯一行 执行某些操作 或不执
  • Excel 宏通过 powershell 运行,但在 Windows 任务计划程序运行时不运行

    我有一个脚本检查 Excel 文件的文件夹 然后如果此 阈值 大于 0 则运行另一个 Excel 文件中的宏来与这些 Excel 文件夹交互 当我通过 powershell ISE 手动运行该进程时 它工作正常 但是当我使用 Windows
  • 确定绑定到事件的事件处理程序列表

    我有一个无法关闭的 WinForms 表单 在 OnFormClosing 中 e Cancel 设置为 true 我猜测我的应用程序中的某些对象已绑定到 Closing 或 FormClosing 事件 并且正在阻止关闭 为了找到答案 我
  • 有没有办法在 linq 查询中参数化方法?

    在我使用 Linq to SQL 的应用程序中 用户可以搜索文本 可以在搜索表达式的开头和 或结尾使用星号 现在的代码是这样的 var search SearchTextBox Text Trim bool filterStartsWith
  • 读取串行输入并打印到 Tkinter GUI

    我正在尝试制作一个基于 Tkinter 的 GUI 用于 Arduino 打印传感器值并响应用户输入 我试图用来消除 while 循环的代码是这样的 它不打印任何传感器信息 唯一的输出是 正在尝试 dev ttyACM0 然后打开 tkin
  • 获取 .bat 文件中的图像文件尺寸

    我有一个bat文件 列出了文件夹中所有图像的路径 代码是 echo off break gt infofile txt for f delims F in dir b s bmp do echo F 1 1 1 100 100 gt gt
  • 如何在 nginx 中包含位置块?

    我在用着nginx作为 2 个网络应用程序的反向代理 这两个网络应用程序 UI 共享位置代理 因为后端服务是共享的 如何组合位置块并将它们包含在服务器中 主机配置文件 server server name app1 com listen 8
  • 加密加密属性文件中的密码

    Problem 我正在使用 Apache CXF 3 0 7 并在新功能您可以在加密属性文件中存储密钥库密码的 BASE 64 编码 加密版本 但我不知道如何添加它 我没有找到此实现的示例 在 apache web 中说 加密属性文件内容的