我有一个集成,在其中验证另一个服务创建的JSON。它们提供了一个公共endpoint来获取要验证的公共证书。
但我正在为此设置一个测试,并希望与Nimbus创建相同的JWT,以使用我自己的私钥对其进行签名。所以我这样做(这是一个嵌套的加密JWT):https://connect2id.com/products/nimbus-jose-jwt/examples/signed-and-encrypted-jwt
然后我想在测试中用MockServer(https://www.mock-server.com/)endpoint模拟公共endpoint,问题是我试图从senderJWK的公钥创建一个PEM证书,例如:
var encoded = senderJWK.toPublicKey().getEncoded();
var base64Encoded = Base64.getEncoder().encode(encoded);
return new String(base64Encoded, StandardCharsets.UTF_8);
(我还测试了senderJWK. toRSAPublicKey(). getEncoded()
。)
与真实证书一起工作的代码不能解析它。解析它的代码如下所示:
private static RSAPublicKey readPublicKey(String publicKey) throws CertificateException {
var bytes = Base64.getDecoder().decode(publicKey);
var inStream = new ByteArrayInputStream(bytes);
var certificateFactory = CertificateFactory.getInstance(X_509_CERTIFICATE_FACTORY);
var certificate = (X509Certificate) certificateFactory.generateCertificate(inStream);
return (RSAPublicKey) certificate.getPublicKey();
}
我得到的错误是:
java.io.IOException: Too short
at java.base/sun.security.util.DerValue.<init>(DerValue.java:333)
at java.base/sun.security.util.DerInputStream.getDerValue(DerInputStream.java:109)
at java.base/sun.security.x509.X509CertImpl.parse(X509CertImpl.java:1771)
at java.base/sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:183)
... 100 common frames omitted
Wrapped by: java.security.cert.CertificateException: Unable to initialize, java.io.IOException: Too short
at java.base/sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:186)
at java.base/sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:105)
at java.base/java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:355)
... 95 common frames omitted
好的,我想我需要做的是从java创建na X509证书,然后在签名和验证中使用该证书中的私钥和公钥。
找到了关于如何使用bouncy castle实现这一点的资源:使用Java中的bouncy castle自签名X509证书如何使用Java创建X509证书?
我正在尝试用c#签署比特币交易。我有两段代码要完成。我可以使用Bouncy castle创建一组私钥和公钥。我可以将其转换为钱包导入格式ok。 我还可以从ECDSA公钥生成比特币地址。 然而,我想签署一项交易,我所拥有的只是我的私钥。我不想把东西放进钱包里签名。那么,在只提供私钥的情况下,如何生成公钥呢? 我发现了一个javascript方法可以做到这一点: 我在充气城堡看到的唯一方法是生成随机一
我想为这个方法生成的公钥创建文件 因为我正在为移动应用程序生成此密钥,而他们无法读取,所以他们请求文件,而不是作为字符串的公钥 请各位指教,,
我必须创建一个aes-256密钥并将其存储在。pem文件中。我使用创建一个256位的随机密钥。在此之后,我如何将此保存到一个pem文件。我已经研究了在C和openssl pem中读写pem文件的rsa密钥。但我不使用RSA密钥。 我怀疑我的任务要简单得多,比如从base64创建pem,但没有太多帮助。
问题内容: 因此,有很多关于如何使用puttyGen将PEM转换为PPK的教程。但是我的问题是我的Windows计算机只有唯一的PEM副本,我将其转换为PPK并删除了它。现在,我需要弄清楚如何将PPK转换为PEM,以便我的Mac可以通过SSH进入服务器。我仍然可以访问服务器,因此,如果需要的话,我也可以创建一个新密钥,有人知道如何将PPK转换为PEM吗? 问题答案: 安装 PuttyTools 生
我是新来配置Jetty服务器的SSL。我按照digcert的步骤创建了私钥文件、证书请求CSR文件。 我向CA发送了证书请求,并拿回了我签名的CSR。但是CA给我发了一个有两个证书的捆绑包,一个是我的证书,由CA签名,第二个是CA证书。(1star_xyx_abc_comcrt文件,2.CRT文件)。现在我面临着从这些文件创建密钥库的麻烦。 当我按照Oracle文档的步骤4、5和6使用keytoo
我需要使用私钥和公钥读取OpenID Connect流中的加密ID令牌。不需要证书。 首先我跑了: openssl req-新-新密钥rsa:2048-密钥输出密钥。pem-pubkey-out pubreq。pem-SUB“/CN=我的密钥” 获得了公钥和私钥。 然后我跑了: openssl pkcs12-导出-inkey密钥。pem-out encryptedprivatekeytest。p1