HPKP 和椭圆曲线证书

信息安全 tls openssl
2021-08-26 07:30:31

网上有很多关于如何为 RSA 证书(例如,Mozilla)提取 SHA-256 指纹(公钥固定头需要)的 base 64 编码的信息。

但是,我不确定如何为 ECC 证书获取相同的信息。替换rsaec似乎是一个不错的主意,但是openssl ec -in my-key-file.key -outform der -pubout不仅打印密钥的实际内容,而且

read EC key
writing EC key

预先。我猜这个样板输出包含在 SHA-256 散列的东西中,从而使整个过程无效。有什么办法可以规避这种情况吗?

1个回答

有额外的状态输出,但它进入 StdErr 流。所以它进入控制台(即屏幕显示)并且不会进入管道。常规输出是“StdOut”流的一部分。该流进入管道。这对 *nix 和 Windows 也有效。

这是一个例子。

生成密钥:

C:\>openssl ecparam -name secp256k1 -genkey -noout -out secp256k1-key.pem

如果你什么都不重定向,那么两个流都会出现在屏幕上:

C:\>openssl ec -in secp256k1-key.pem -noout -text
read EC key
Private-Key: (256 bit)
priv:
    00:d6:09:84:21:77:32:86:bb:5d:c9:da:30:ce:dc:
    98:28:f1:f2:f2:2e:2a:9a:91:28:c3:88:b2:bb:80:
    51:24:39
pub:
    04:e3:4b:2c:96:44:08:18:9f:37:bb:b5:8e:44:52:
    69:f4:4b:7f:a7:2a:61:9e:5a:39:1a:07:7a:d6:27:
    e8:8f:83:36:fa:a6:72:e9:f5:7c:41:53:0c:b6:16:
    ab:24:7a:0d:82:2c:b9:cc:2d:2b:08:38:83:e2:ac:
    4e:d7:9a:09:91
ASN1 OID: secp256k1

如果你丢弃流“1”,即 StdOut,那么剩下的就是流“2”,它就是 StdErr:

C:\>openssl ec -in secp256k1-key.pem -noout -text 1>NUL
read EC key

您也可以丢弃流“2”:

C:\>openssl ec -in secp256k1-key.pem -noout -text 2>NUL
Private-Key: (256 bit)
priv:
    00:d6:09:84:21:77:32:86:bb:5d:c9:da:30:ce:dc:
    98:28:f1:f2:f2:2e:2a:9a:91:28:c3:88:b2:bb:80:
    51:24:39
pub:
    04:e3:4b:2c:96:44:08:18:9f:37:bb:b5:8e:44:52:
    69:f4:4b:7f:a7:2a:61:9e:5a:39:1a:07:7a:d6:27:
    e8:8f:83:36:fa:a6:72:e9:f5:7c:41:53:0c:b6:16:
    ab:24:7a:0d:82:2c:b9:cc:2d:2b:08:38:83:e2:ac:
    4e:d7:9a:09:91
ASN1 OID: secp256k1

至于“为什么?”:我不知道。我认为这只是 OpenSSL 命令行实用程序的众多怪癖之一。