PKI/X509 Profile

[X.509] ์†Œ์œ ์ž ๋Œ€์ฒด ๋ช…์นญ(Subject Alternative Name) ์ด๋ž€

JayKim๐Ÿ™‚ 2023. 8. 22. 09:11

์†Œ์œ ์ž ๋Œ€์ฒด ๋ช…์นญ ํ™•์žฅ ํ•„๋“œ๋Š” ์†Œ์œ ์ž์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ๋ช…์นญ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
์ฆ‰ Subject DN์˜ ์ถ”๊ฐ€ ๋ช…์นญ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ฐธ๊ณ ๋กœ ์†Œ์œ ์ž ๋Œ€์ฒด ๋ช…์นญ๊ณผ ๊ฐ™์€ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐœ๊ธ‰์ž ๋Œ€์ฒด ๋ช…์นญ (Issuer Alternative Name) ๋„ ์กด์žฌ ํ•˜๋Š”๋ฐ
์ด ๊ฐ’์€ ๋ฐœ๊ธ‰์ž ์ฆ‰ ์ธ์ฆ๊ธฐ๊ด€์˜ ์ถ”๊ฐ€ ์ ์ธ ๋ช…์นญ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ Subject Alternative Name ์„ ์‚ฌ์šฉํ•œ ์ธ์ฆ์„œ ์˜ˆ์ œ ์ด๋‹ค.

์ด ๊ทธ๋ฆผ์—์„œ๋Š” DNS ์ด๋ฆ„ ์ •๋ณด๋ฅผ ์†Œ์œ ์ž ๋Œ€์ฒด ๋ช…์นญ์œผ๋กœ ์‚ฌ์šฉ ๋˜์—ˆ๋‹ค.

์†Œ์œ ์ž ๋Œ€์ฒด ๋ช…์นญ์˜ ์ข…๋ฅ˜

์†Œ์œ ์ž ๋Œ€์ฒด ๋ช…์นญ์˜ ํƒ€์ž…์—๋Š” 9๊ฐ€์ง€ ํ˜•์‹์ด ์ง€์› ๋œ๋‹ค.

  • rfc822Name : ์ธํ„ฐ๋„ท ์ „์ž ๋ฉ”์ผ
  • dNSName : DNS ์ด๋ฆ„
  • iPAddress : IP ์ฃผ์†Œ
  • uniformResourceIdentifier : URL ์ฃผ์†Œ
    ๊ทธ์™ธ์—๋„ x400Address, ediPartyName ๊ทธ๋ฆฌ๊ณ  registerID ํ˜•์‹์ด ์žˆ๋‹ค.
    ๋˜ํ•œ ๋‹ค์–‘ํ•œ ํƒ€์ž… ์ง€์›์„ ์œ„ํ•ด otherName ํ˜•์‹์ด ์žˆ๋‹ค.

์ฐธ๊ณ ๋กœ ๊ณต๋™ ์ธ์ฆ์„œ ๊ฒฝ์šฐ ์‹ ์› ํ™•์ธ์„ ์œ„ํ•œ VID ํ˜•์‹ ๊ฐ’์ผ ์ €์žฅ ํ•˜๋Š”๋ฐ ์ด ๊ฐ’์ด
์†Œ์œ ์ž ๋Œ€์ฒด ๋ช…์นญ์œ otherName ํ˜•์‹์„ ์‚ฌ์šฉ ํ•˜์˜€๋‹ค.

์†Œ์œ ์ž ๋Œ€์ฒด ๋ช…์นญ(Subject Alternative Name) ASN.1

   id-ce-subjectAltName OBJECT IDENTIFIER ::=  { id-ce 17 }

   SubjectAltName ::= GeneralNames

   GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName

   GeneralName ::= CHOICE {
        otherName                       [0]     OtherName,
        rfc822Name                      [1]     IA5String,
        dNSName                         [2]     IA5String,
        x400Address                     [3]     ORAddress,
        directoryName                   [4]     Name,
        ediPartyName                    [5]     EDIPartyName,
        uniformResourceIdentifier       [6]     IA5String,
        iPAddress                       [7]     OCTET STRING,
        registeredID                    [8]     OBJECT IDENTIFIER }

   OtherName ::= SEQUENCE {
        type-id    OBJECT IDENTIFIER,
        value      [0] EXPLICIT ANY DEFINED BY type-id }

   EDIPartyName ::= SEQUENCE {
        nameAssigner            [0]     DirectoryString OPTIONAL,
        partyName               [1]     DirectoryString }

์œ„์˜ ASN.1 ํ˜•์‹์„ ๋ณด๋ฉด GeneralName ์—์„œ 9๊ฐ€์ง€ ๋ฐ์ดํƒ€ ํƒ€์ž…์ด ์กด์žฌ ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํŠน๋ณ„ํžˆ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์œ„ํ•ด์„œ OtherName ํ˜•์‹์ด ์žˆ๋Š”๋ฐ
OtherName ์˜ ๊ฒฝ์šฐ type-id ์ง€์ •์„ ํ†ตํ•œ ๋‹ค์–‘ํ•œ value ๊ฐ’์„ ์ง€์ • ํ•˜์—ฌ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌ

์†Œ์œ ์ž ๋Œ€์ฒด ๋ช…์นญ์€ SSL ์ธ์ฆ์„œ๋‚˜ ๋˜๋Š” SMIME์šฉ ์ด๋ฉ”์ผ ๊ทธ๋ฆฌ๊ณ  ๊ณต๋™ ์ธ์ฆ์„œ ์‹ ์› ํ™•์ธ์˜ VID ๊ฐ’๋“ฑ
ํ•ด๋‹น ์ธ์ฆ์„œ์— ํ•„์š”ํ•œ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ €์žฅ ๋ฐ ํ™•์ธ์„ ์œ„ํ•œ X.509 ํ™•์žฅ ํ•„๋“œ ์ด๋‹ค.