我使用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的签名部分,我得到了以下内容:
签名算法:ecdsa-with 1 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
我应该怎么做才能得到一个签名算法“ecdsa-with 384”而不是“ecdsa-with 1”?在这个过程中我遗漏了什么吗?我试图在第二个命令中使用-sha384
openssl req -new -key ec_client_key.pem -out ec_clientReq.pem -sha384
但是我在签名算法上得到了同样的结果
签名算法:ecdsa-with 1 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
另一个问题涉及签字的格式。在上面的例子中,一个是102字节长,第二个是103个字节长。第一个字节似乎是一个头部,包括类型、长度,并且可能是其他一些东西,比如填充。但我找不到确切的定义。有人能给这个放点光吗?谢谢
发布于 2013-06-03 14:28:34
我再次尝试使用上一次openssl版本1.0.1e (而不是0.9.8n)。
openssl ecparam -out ec_client_key.pem -name secp384r1 -gen openssl req -config openssl.cnf -new -key ec_client_key.pem -out ec_clientReq.pem -sha384 openssl req -in ec_clientReq.pem -noout -text
现在我得到了预期的结果:
签名算法:ecdsa-with 384
看起来0.9.8n版本不支持sha384。
从更改文件中提取的内容似乎证实了这一点:
2012年3月14日1.0.0h至1.0.1之间的变化:. *)从RFC5289添加HMAC ECC密码。包括SHA384 PRF支持。按照RFC5289的要求,如果TLS的版本早于1.2,则不能使用这些密匙。史蒂夫·亨森
谢谢gtrig的帮助。
发布于 2013-05-30 00:05:53
当我使用与-SHA384选项相同的命令时,我在得到的CSR中得到了这样的结果:“:ecdsa- with 384”。
键入此命令以查看支持的摘要列表:
openssl list-message-digest-algorithms希望您能在列表中看到SHA384。
关于你的第二个问题,格式是ASN.1。"30“表示序列如下(在本例中,它是由2个整数组成的序列)。"65“是序列中的八位数。"02“表示一个整数,30是该整数中的八进制数。如果您跳过了0x30 (小数点48)八进制,您将进入第二个整数,它被标记为"02“和"31”。第一个整数的长度是30,第二个整数的长度是31。加上每一个整数的两个八位数,就会得到65,这是序列的长度。这个页面可以告诉你更多关于ASN.1的信息。
至于这个值是一个由两个整数组成的序列,这是有意义的。ECDSA签名由2个整数组成。有关更多信息,请参见RFC6605第4节。还有一个解释如何计算两个整数的wiki页面。
发布于 2014-10-30 21:56:23
为了使答案更加完整,可以提到具有ecdsa-sha384签名的非自签名证书的生成,因为它有点不同。诀窍是使用"-md sha384“参数和"openssl”命令。
包含客户端证书的示例
为证书颁发机构生成密钥:
openssl ecparam -out ca.key -name secp384r1 -genkey为ca创建自签名证书:
openssl req -x509 -new -key ca.key -out ca-ca.pem -outform pem -sha384为客户端生成密钥:
openssl ecparam -out host1.key -name secp384r1 -genkey为客户端密钥创建证书请求:
openssl req -new -nodes -key host1.key -outform pem -out host1.req -sha384响应请求为客户创建证书:
openssl ca -keyfile ca.key -cert ca-ca.pem -in host1.req
-out ca-host1-cert.pem -md sha384 -outdir .https://stackoverflow.com/questions/16818014
复制相似问题