小编gtr*_*rig的帖子

使用secp384r1elliptic曲线键和sha384散列签名生成csr

我使用openssl命令创建一个带有椭圆曲线secp384r1的CSR和使用算法sha384签名的哈希:

openssl ecparam -out ec_client_key.pem -name secp384r1 -genkey

openssl req -new -key ec_client_key.pem -out ec_clientReq.pem

然后我用这个命令以可读格式显示CSR:

openssl req -in ec_clientReq.pem -noout -text

在CSR的签名部分,我得到了这个:

Signature Algorithm: ecdsa-with-SHA1
    30:64:02:30:06:a1:f2:5e:1b:34:18:b9:f3:7c:e9:52:c8:78:
    99:90:63:d2:1e:d2:f5:7a:25:f3:d6:4d:6d:90:d0:bf:25:45:
    15:ad:aa:17:34:ad:1a:b9:1e:67:2b:cf:d7:a6:9b:e5:02:30:
    31:fe:76:37:4b:11:3a:e7:2d:63:52:bb:18:2f:8e:43:a7:bb:
    65:74:38:a4:92:38:9d:eb:ec:22:8f:77:f3:e4:5f:47:2d:f8:
    2a:9b:e1:2c:ba:a7:b0:e6:c2:54:8d:0e
Run Code Online (Sandbox Code Playgroud)

为了获得签名算法"ecdsa-with-SHA384"而不是"ecdsa-with-SHA1",我该怎么办?我在这个过程中遗漏了什么吗?我试图在第二个命令中使用-sha384

openssl req -new -key ec_client_key.pem -out ec_clientReq.pem -sha384

但我得到了与签名算法相同的结果

Signature Algorithm: ecdsa-with-SHA1
    30:65:02:30:4e:b4:b6:5f:3a:fc:b7:28:e5:4b:f0:3d:9a:ea:
    4a:ba:ce:a4:f1:a6:e8:cd:15:19:23:a6:81:3f:24:01:d7:81:
    3c:9d:9a:4c:cd:4b:4a:12:6d:69:48:ec:7e:73:7d:73:02:31:
    00:d7:a5:63:9b:21:b2:95:ce:7f:13:3f:c5:1a:ac:99:01:ff:
    ba:9c:59:93:d5:ee:97:03:b5:9e:c1:7d:03:f8:72:90:65:b5:
    08:7c:79:ae:ea:4f:6e:b0:2b:55:1a:11:a5
Run Code Online (Sandbox Code Playgroud)

另一个问题涉及签名的格式.在上面的例子中,一个是102字节长,第二个是103字节长.似乎第一个字节是包含类型,长度的标题,可能还有其他一些内容,如填充.但我找不到一个确切的定义.有些人可以对此有所了解吗?谢谢

openssl csr

8
推荐指数
1
解决办法
1万
查看次数

使用 Bouncy Castle 在 Java 中创建自定义 X509 v3 扩展

我已成功使用 Bouncy Castle 中的 X509v3CertificateBuilder Java 类创建具有标准 V3 扩展的 X509 证书。我现在正在尝试创建具有自定义扩展的证书。

我可以使用 addExtension(...) 方法创建自定义扩展,但是,证书中的结果值不是我想要的。例如,我希望在自定义 OID 1.2.3.4 下的证书中列出这些确切的八位字节:“00 00 00 00 FF FF FF FF”。我尝试的所有操作都将该八位字节字符串包装在 ASN1 编码中,最终结果为“04 08 00 00 00 00 FF FF FF FF”。

基本上,我想在 Java 中创建一个带有自定义扩展的证书,该扩展看起来与使用具有以下配置的扩展文件使用 OpenSSL 创建证书时的外观相同:

1.2.3.4=DER:00:00:00:00:FF:FF:FF:FF
Run Code Online (Sandbox Code Playgroud)

是否可以使用 X509v3CertificateBuilder 类以干净的方式完成此操作?

下面是创建“不正确”值的代码片段。

  // Raw value to place in cert for OID 1.2.3.4.
  byte[] bytearray = {0, 0, 0, 0, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF};

  ASN1ObjectIdentifier asn1oid = new ASN1ObjectIdentifier("1.2.3.4");

  Extension ext = new Extension(asn1oid, …
Run Code Online (Sandbox Code Playgroud)

java openssl bouncycastle certificate x509certificate

4
推荐指数
1
解决办法
6422
查看次数

标签 统计

openssl ×2

bouncycastle ×1

certificate ×1

csr ×1

java ×1

x509certificate ×1