gpt4 book ai didi

java - ColdFusion 10 中的 BouncyCaSTLe 库

转载 作者:行者123 更新时间:2023-11-30 09:04:55 26 4
gpt4 key购买 nike

我一直在尝试让 RSA 私钥加密在 ColdFusion 10 中工作,并安装了 BouncyCaSTLe 库,因为它支持我的应用程序所需的加密模式。尝试使用 JavaLoader 加载库导致错​​误(“类在引导类路径上”和“JCE 无法验证提供者 BC”)所以我不得不静态安装它...

将 jar 复制到 %CF_ROOT%/jre/lib/ext/ 并将以下内容添加到 %CF_ROOT%/jre/lib/security/java.security:

security.provider.<N>=org.bouncycastle.jce.provider.BouncyCastleProvider

当时我还没有意识到,我也从代码中删除了该库,但使用该库的语句仍然有效:

var privateKey = createObject("java", "org.bouncycastle.util.io.pem.PemReader").init(
createObject("java", "java.io.FileReader").init(LOCAL.privateKeyPath)
).readPemObject().getContent();

所以要么我在我的 ColdFusion 安装中永久安装了 BouncyCaSTLe,要么它包含在 ColdFusion 中。我已经删除了静态提供程序安装,使用“BC”提供程序的加密继续工作而无需修改。如果 BouncyCaSTLe 与 CF 捆绑在一起,那很好,但是在另一台运行同样更新版本的 ColdFusion(CF10 更新 13)的机器上,createObject 语句失败,因为它找不到 PemReader 类。我搜索了我的眼睛,但找不到任何关于 BouncyCaSTLe 的文档被包含在任何版本的 CF 中——除了 CF10 EULA 中关于 BouncyCaSTLe 的条款。

问题是:BouncyCaSTLe 是否包含在 CF10 中?如果包含,我如何确保它已启用?

最佳答案

虽然我仍然不清楚为什么两台具有相同版本的 CF 和相同版本的相同 java 包的机器会在该包中包含的类中存在差异,但我确实找到了解决方法。

BouncyCaSTLe Provider 包中的 org.bouncycaSTLe.util.io.pem.PemReader 类替代了中已弃用的 org.bouncycaSTLe.openssl.PEMReader 类BouncyCaSTLe PKIX/OpenSSL 包。由于 CF10 附带了相对较旧版本的 BC (v1.39-jdk1.4),因此它仍然包含已弃用的类。用以下代码替换上面的代码更正了问题...

var privateKeyFile = createObject("java", "java.io.FileReader").init("myPrivateKey.pem");
var privateKey = createObject("java", "org.bouncycastle.openssl.PEMReader").init( privateKeyFile ).readObject().getPrivate().getEncoded();
privateKeyFile.close();

它还有显式关闭文件的好处(尽管这总是可能的)。

注意:出现早期问题的机器也没有加载 BouncyCaSTLe 安全提供程序。它似乎在每台机器上都可用,但并不总是加载,因此如果尚未加载它,我必须显式加载它:

var securityProviders = createObject("java", "java.security.Security").getProviders();
var providerInstalled = false;
for( var provider IN securityProviders ){
if( provider.getName() eq "BC" ){
providerInstalled = true;
break;
}
}
if( not providerInstalled )
createObject("java", "java.security.Security")
.addProvider( createObject("java", "org.bouncycastle.jce.provider.BouncyCastleProvider").init() );

关于java - ColdFusion 10 中的 BouncyCaSTLe 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25027957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com