Azure 密钥保管库 - 下载的证书与导入的证书不同

问题描述 投票:0回答:2

我将以下证书导入 Azure keyvault

-----BEGIN CERTIFICATE-----
MIICbDCCAhKgAwIBAgIGAXQ5qjdkMAoGCCqGSM49BAMCMDUxMzAxBgNVBAMTKmNh
LmhsZjA2MThvcmRlcmVyLm1pY3Jvc29mdC5ibG9ja2NoYWluLmNvbTAeFw0yMDA4
MjkxMDAxMzBaFw0yMTA4MjkxMDAxMzBaMIGDMVIwUAYDVQQDDEk3MmY5ODhiZi04
NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDcuMjRkN2IwNmYtZWRmMy00MjJiLTll
MjQtMTljNjZmMmViYWU1MQ4wDAYDVQQLDAV0ZWFtMTENMAsGA1UECwwEb3JnMTEO
MAwGA1UECwwFYWRtaW4wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR5kpzf9KLu
FMI1DYF+a/YXucDPdL+X4zeflzyIDC0hjh149s+OUcRSfwoJbbvP/LgwZEPNdkzM
GLOXnpoZ6JzOo4G+MIG7MA4GA1UdDwEB/wQEAwIAgDAMBgNVHRMBAf8EAjAAMB8G
A1UdIwQYMBaAFAPv72m50bw6Uz0kfAjHA7nS0fSUMB0GA1UdDgQWBBTaOaPuXmtL
DTJVv++VYBiQr9gHCTBbBggqAwQFBgcIAQRPeyJhdHRycyI6eyJhbGxvd19pbnZv
a2UiOnRydWUsImhmLlR5cGUiOiJhZG1pbiIsImhmLkFmZmlsaWF0aW9uIjoib3Jn
MS50ZWFtMSJ9fTAKBggqhkjOPQQDAgNIADBFAiBoMtxoHXqQrgoQgYAMb5uOZFxD
d/rcwbIRMCswVaqMpgIhANGfg4EHvT4gdOVtmRajXLyzyiNAPEyiEwMQ7RoeyK+g
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgKlUqQnd/R70FJPSX
RLii3o7t0//f37fIVgU4fvI6SY6hRANCAAR5kpzf9KLuFMI1DYF+a/YXucDPdL+X
4zeflzyIDC0hjh149s+OUcRSfwoJbbvP/LgwZEPNdkzMGLOXnpoZ6JzO
-----END PRIVATE KEY-----

当我将证书下载为 pem 时,私钥被更改了

az keyvault secret download --file "./text" --id https://myvault.vault.azure.net/secrets/sample/6d5505d2d0cd4d2285c80dc5a259c61c

我有一个不同的私钥。

-----BEGIN PRIVATE KEY-----
MIGiAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgKlUqQnd/R70FJPSX
RLii3o7t0//f37fIVgU4fvI6SY6gCgYIKoZIzj0DAQehRANCAAR5kpzf9KLuFMI1
DYF+a/YXucDPdL+X4zeflzyIDC0hjh149s+OUcRSfwoJbbvP/LgwZEPNdkzMGLOX
npoZ6JzOoA0wCwYDVR0PMQQDAgCA
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICbDCCAhKgAwIBAgIGAXQ5qjdkMAoGCCqGSM49BAMCMDUxMzAxBgNVBAMTKmNh
LmhsZjA2MThvcmRlcmVyLm1pY3Jvc29mdC5ibG9ja2NoYWluLmNvbTAeFw0yMDA4
MjkxMDAxMzBaFw0yMTA4MjkxMDAxMzBaMIGDMVIwUAYDVQQDDEk3MmY5ODhiZi04
NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDcuMjRkN2IwNmYtZWRmMy00MjJiLTll
MjQtMTljNjZmMmViYWU1MQ4wDAYDVQQLDAV0ZWFtMTENMAsGA1UECwwEb3JnMTEO
MAwGA1UECwwFYWRtaW4wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR5kpzf9KLu
FMI1DYF+a/YXucDPdL+X4zeflzyIDC0hjh149s+OUcRSfwoJbbvP/LgwZEPNdkzM
GLOXnpoZ6JzOo4G+MIG7MA4GA1UdDwEB/wQEAwIAgDAMBgNVHRMBAf8EAjAAMB8G
A1UdIwQYMBaAFAPv72m50bw6Uz0kfAjHA7nS0fSUMB0GA1UdDgQWBBTaOaPuXmtL
DTJVv++VYBiQr9gHCTBbBggqAwQFBgcIAQRPeyJhdHRycyI6eyJhbGxvd19pbnZv
a2UiOnRydWUsImhmLlR5cGUiOiJhZG1pbiIsImhmLkFmZmlsaWF0aW9uIjoib3Jn
MS50ZWFtMSJ9fTAKBggqhkjOPQQDAgNIADBFAiBoMtxoHXqQrgoQgYAMb5uOZFxD
d/rcwbIRMCswVaqMpgIhANGfg4EHvT4gdOVtmRajXLyzyiNAPEyiEwMQ7RoeyK+g
-----END CERTIFICATE-----

为什么私钥会变?我怎样才能得到我导入的相同的私钥?

azure azure-keyvault
2个回答
0
投票

根据您提供的 az 命令,您将证书导入为 azure key vault secret。

如果是这样,您发送的证书内容将与您获得的秘密值相同

因为我有测试,当我将证书作为秘密导入时。然后我检索相同的秘密值。

所以,尝试重新创建一个新的秘密并再次导入。


0
投票

晚了但是 - 它是相同的密钥,编码不同

您的意见是

$ openssl asn1parse <63646197.1 -i -dump
    0:d=0  hl=3 l= 135 cons: SEQUENCE
    3:d=1  hl=2 l=   1 prim:  INTEGER           :00
    6:d=1  hl=2 l=  19 cons:  SEQUENCE
    8:d=2  hl=2 l=   7 prim:   OBJECT            :id-ecPublicKey
   17:d=2  hl=2 l=   8 prim:   OBJECT            :prime256v1
   27:d=1  hl=2 l= 109 prim:  OCTET STRING
      0000 - 30 6b 02 01 01 04 20 2a-55 2a 42 77 7f 47 bd 05   0k.... *U*Bw.G..
      0010 - 24 f4 97 44 b8 a2 de 8e-ed d3 ff df df b7 c8 56   $..D...........V
      0020 - 05 38 7e f2 3a 49 8e a1-44 03 42 00 04 79 92 9c   .8~.:I..D.B..y..
      0030 - df f4 a2 ee 14 c2 35 0d-81 7e 6b f6 17 b9 c0 cf   ......5..~k.....
      0040 - 74 bf 97 e3 37 9f 97 3c-88 0c 2d 21 8e 1d 78 f6   t...7..<..-!..x.
      0050 - cf 8e 51 c4 52 7f 0a 09-6d bb cf fc b8 30 64 43   ..Q.R...m....0dC
      0060 - cd 76 4c cc 18 b3 97 9e-9a 19 e8 9c ce            .vL..........

使用 SEC1 定义的 EC 的每个算法数据和(更方便)rfc5915

$ openssl asn1parse <63646197.1 -i -dump -strparse 27
    0:d=0  hl=2 l= 107 cons: SEQUENCE
    2:d=1  hl=2 l=   1 prim:  INTEGER           :01
    5:d=1  hl=2 l=  32 prim:  OCTET STRING
      0000 - 2a 55 2a 42 77 7f 47 bd-05 24 f4 97 44 b8 a2 de   *U*Bw.G..$..D...
      0010 - 8e ed d3 ff df df b7 c8-56 05 38 7e f2 3a 49 8e   ........V.8~.:I.
   39:d=1  hl=2 l=  68 cons:  cont [ 1 ]
   41:d=2  hl=2 l=  66 prim:   BIT STRING
      0000 - 00 04 79 92 9c df f4 a2-ee 14 c2 35 0d 81 7e 6b   ..y........5..~k
      0010 - f6 17 b9 c0 cf 74 bf 97-e3 37 9f 97 3c 88 0c 2d   .....t...7..<..-
      0020 - 21 8e 1d 78 f6 cf 8e 51-c4 52 7f 0a 09 6d bb cf   !..x...Q.R...m..
      0030 - fc b8 30 64 43 cd 76 4c-cc 18 b3 97 9e 9a 19 e8   ..0dC.vL........
      0040 - 9c ce                                             ..

如您所见,它没有可选的 context-0-tagged parameters 字段。

相比之下,输出是

$ openssl asn1parse <63646197.2 -i -dump
    0:d=0  hl=3 l= 162 cons: SEQUENCE
    3:d=1  hl=2 l=   1 prim:  INTEGER           :00
    6:d=1  hl=2 l=  19 cons:  SEQUENCE
    8:d=2  hl=2 l=   7 prim:   OBJECT            :id-ecPublicKey
   17:d=2  hl=2 l=   8 prim:   OBJECT            :prime256v1
   27:d=1  hl=2 l= 121 prim:  OCTET STRING
      0000 - 30 77 02 01 01 04 20 2a-55 2a 42 77 7f 47 bd 05   0w.... *U*Bw.G..
      0010 - 24 f4 97 44 b8 a2 de 8e-ed d3 ff df df b7 c8 56   $..D...........V
      0020 - 05 38 7e f2 3a 49 8e a0-0a 06 08 2a 86 48 ce 3d   .8~.:I.....*.H.=
      0030 - 03 01 07 a1 44 03 42 00-04 79 92 9c df f4 a2 ee   ....D.B..y......
      0040 - 14 c2 35 0d 81 7e 6b f6-17 b9 c0 cf 74 bf 97 e3   ..5..~k.....t...
      0050 - 37 9f 97 3c 88 0c 2d 21-8e 1d 78 f6 cf 8e 51 c4   7..<..-!..x...Q.
      0060 - 52 7f 0a 09 6d bb cf fc-b8 30 64 43 cd 76 4c cc   R...m....0dC.vL.
      0070 - 18 b3 97 9e 9a 19 e8 9c-ce                        .........
  150:d=1  hl=2 l=  13 cons:  cont [ 0 ]
  152:d=2  hl=2 l=  11 cons:   SEQUENCE
  154:d=3  hl=2 l=   3 prim:    OBJECT            :X509v3 Key Usage
  159:d=3  hl=2 l=   4 cons:    SET
  161:d=4  hl=2 l=   2 prim:     BIT STRING
      0000 - 00 80                                             ..
$ openssl asn1parse <63646197.2 -i -dump -strparse 27
    0:d=0  hl=2 l= 119 cons: SEQUENCE
    2:d=1  hl=2 l=   1 prim:  INTEGER           :01
    5:d=1  hl=2 l=  32 prim:  OCTET STRING
      0000 - 2a 55 2a 42 77 7f 47 bd-05 24 f4 97 44 b8 a2 de   *U*Bw.G..$..D...
      0010 - 8e ed d3 ff df df b7 c8-56 05 38 7e f2 3a 49 8e   ........V.8~.:I.
   39:d=1  hl=2 l=  10 cons:  cont [ 0 ]
   41:d=2  hl=2 l=   8 prim:   OBJECT            :prime256v1
   51:d=1  hl=2 l=  68 cons:  cont [ 1 ]
   53:d=2  hl=2 l=  66 prim:   BIT STRING
      0000 - 00 04 79 92 9c df f4 a2-ee 14 c2 35 0d 81 7e 6b   ..y........5..~k
      0010 - f6 17 b9 c0 cf 74 bf 97-e3 37 9f 97 3c 88 0c 2d   .....t...7..<..-
      0020 - 21 8e 1d 78 f6 cf 8e 51-c4 52 7f 0a 09 6d bb cf   !..x...Q.R...m..
      0030 - fc b8 30 64 43 cd 76 4c-cc 18 b3 97 9e 9a 19 e8   ..0dC.vL........
      0040 - 9c ce                                             ..

确实有 context-0-tagged parameters 字段,在 PKCS8 中使用时是多余的;同样在 PKCS8 级别,它具有可选的 context-0-tagged 属性字段,其中包含一个具有 id KeyUsage 和值 digitalSignature 的属性。 (OpenSSL 显示 BITSTRING 编码的实际值字段,包括为“未使用的位”保留的第一个八位字节,此处为 00,因此编码位为 80,即 bit#0=digitalSignature。)这在技术上是多余的,因为它已经在证书中,但我猜 Azure 觉得在这里复制一份很方便。

用于加密目的的实际密钥是曲线 ID,SEC1 数据中偏移量 5 处的私有标量“d”,如果存在(它是)SEC1 中 context-1-tag 处的公共点“Q”数据,您可以确认所有这三个在输出中与输入相同。

© www.soinside.com 2019 - 2024. All rights reserved.