Tag: jca

在JCA中为TLS定义密码套件

我希望使用JCA在TLS中支持以下密码套件: TLS_PSK_WITH_3DES_EDE_CBC_SHA TLS_PSK_WITH_AES_128_CBC_SHA TLS_PSK_WITH_NULL_SHA TLS_PSK_WITH_AES_128_CBC_SHA256 TLS_PSK_WITH_NULL_SHA256 它们在JDK7中可用,但不在JDK6中 ,而不是BouncyCastle。 如果我想在JDK6中获得支持,我是否可以使用SPI,JSSE的提供程序和回调方法扩展JCA以实现对这些PSK扩展的支持。 我已经可以在运行时重新定义或添加新的密码实现,但我不确定JCA是否提供足够的粒度来在TLS中添加新的密码套件。

JCA 1.6 ResourceAdapter是否需要ManagedConnectionFactory?

我以前写了一个JCA资源适配器 。 但是,现在我发现自己只能编写一个来访问BootstrapContext及其相关的WorkManager ,并且没有其他原因。 如果我正确地阅读规范 – 这就是我的问题 – 看起来如果我希望某人能够以符合规范的方式使用我的资源适配器,我仍然需要实现ManagedConnectionFactory ,因为它看起来像只有ManagedConnectionFactory实现提供的用户连接工厂才有资格通过@Resource注释注入。 来吧,再看一遍; 我会等。 🙂 在一个完美的世界中,我想编写我的ResourceAdapter实现,使用@Connector对其进行注释,指定所有@ConfigProperty位,将其打包在.rar文件中,然后完成它。 但是,在我看来,规范有效地强制要求消费者(在我的情况下是无状态EJB)和资源适配器模块之间的所有通信都应该通过用户连接工厂来完成。 例如,第6.10.1节说: 资源适配器必须提供以下接口的实现: javax.resource.spi.ManagedConnectionFactory javax.resource.spi.ManagedConnection javax.resource.spi.ManagedConnectionMetaData 但是第18节 – 关于注释的部分 – 似乎没有规定以任何有意义的方式强制执行。 确实如此吗? 我想它一定是,但我很想知道那些已经组装了1.6资源适配器的人。

如何使用JCA读取BouncyCastle私钥PEM文件?

在我们的一个应用程序中,使用BouncyCastle的PEMWriter存储私钥。 目前我正在调查是否可以摆脱BouncyCastle依赖,因为Java 7似乎拥有我们需要的一切。 唯一的问题是我无法读取存储在数据库中的私钥作为PEM编码的字符串(证书/公钥很好)。 如果我将私有密钥的PEM编码字符串从数据库保存到文件,我可以运行OpenSSL将密钥转换为PKCS#8格式,如下所示: openssl pkcs8 -topk8 -inform PEM -outform DER \ -in private_key.pem -out private_key.der -nocrypt 结果输出我可以base64编码,然后使用这个Java / JCA代码读取: byte[] privateKeyBytes = DatatypeConverter.parseBase64Binary(privateKeyDERcontents); PrivateKey prKey = KeyFactory.getInstance(“RSA”). generatePrivate(new PKCS8EncodedKeySpec(privateKeyBytes)); 这个私钥与预期存储的公钥匹配,即我可以从明文到密文和返回往返。 我的问题是:我能以某种方式直接读取原始PEM编码吗? 编辑 下面是一些使用BouncyCastle读取相关字符串的代码: if (Security.getProvider(“BC”) == null) { Security.addProvider(new BouncyCastleProvider()); } PEMReader pemReader = new PEMReader(new StringReader(privateKeyPEM)); KeyPair keyPair = (KeyPair) pemReader.readObject(); PrivateKey […]

JCA示例实现

我需要开发一个JCA适配器,我正在寻找一些参考。 我在亚马逊上搜索过,发现只有2本JCA书籍,其中一本书的评论非常糟糕。 所以我想这只留下了一本书。 所以我想知道是否有任何JCA适配器的示例实现将有助于我的开发。 我在Google上搜索过,但只设法找到一些非常简单的例子。 提前致谢。

如何从RSA Privatekey.pem文件中获取java.security.PrivateKey对象?

我有一个RSA私钥文件(OCkey.pem)。 使用java我必须从这个文件中获取私钥。 使用下面的openssl命令生成此密钥。 注意:我无法在下面的openssl命令中进行任何更改。 openssl> req -newkey rsa:1024 -sha1 -keyout OCkey.pem -out OCreq.pem -subj “/C=country/L=city/O=OC/OU=myLab/CN=OCserverName/” -config req.conf 证书如下所示。 ////////////////////////////////////////////////// ///////// bash-3.00 $ less OCkey.pem —–开始RSA私钥—– Proc-Type:4,ENCRYPTED DEK-Info:DES-EDE3-CBC,EA1DBF8D142621BF BYyZuqyqq9 + L0UT8UxwkDHX7P7YxpKugTXE8NCLQWhdS3EksMsv4xNQsZSVrJxE3 Ft9veWuk + PlFVQG2utZlWxTYsUVIJg4KF7EgCbyPbN1cyjsi9FMfmlPXQyCJ72rd … … cBlG80PT4t27h01gcCFRCBGHxiidh5LAATkApZMSfe6BBv4hYjkCmg == —– END RSA私钥—– ////////////////////////////////////////////////// //////////// 以下就是我的尝试 byte[] privKeyBytes = new byte[(int)new File(“C:/OCkey.pem”).length()]; PublicKey publicKey = KeyFactory.getInstance(“RSA”).generatePublic(new X509EncodedKeySpec(privKeyBytes)); 但得到 […]