| rfc9549.original | rfc9549.txt | |||
|---|---|---|---|---|
| Network Working Group R. Housley | Internet Engineering Task Force (IETF) R. Housley | |||
| Internet-Draft Vigil Security | Request for Comments: 9549 Vigil Security | |||
| Obsoletes: 8399 (if approved) 18 January 2024 | Obsoletes: 8399 March 2024 | |||
| Updates: 5280 (if approved) | Updates: 5280 | |||
| Intended status: Standards Track | Category: Standards Track | |||
| Expires: 21 July 2024 | ISSN: 2070-1721 | |||
| Internationalization Updates to RFC 5280 | Internationalization Updates to RFC 5280 | |||
| draft-ietf-lamps-rfc8399bis-05 | ||||
| Abstract | Abstract | |||
| The updates to RFC 5280 described in this document provide alignment | The updates to RFC 5280 described in this document provide alignment | |||
| with the 2008 specification for Internationalized Domain Names (IDNs) | with the 2008 specification for Internationalized Domain Names (IDNs) | |||
| and includes support for internationalized email addresses in X.509 | and includes support for internationalized email addresses in X.509 | |||
| certificates. The update ensures that name constraints for | certificates. The updates ensure that name constraints for email | |||
| traditional email addresses and internationalized email addresses are | addresses that contain only ASCII characters and internationalized | |||
| handled in the same manner. This document (once approved) obsoletes | email addresses are handled in the same manner. This document | |||
| RFC 8399. | obsoletes RFC 8399. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 21 July 2024. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9549. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| This document may contain material from IETF Documents or IETF | This document may contain material from IETF Documents or IETF | |||
| Contributions published or made publicly available before November | Contributions published or made publicly available before November | |||
| 10, 2008. The person(s) controlling the copyright in some of this | 10, 2008. The person(s) controlling the copyright in some of this | |||
| material may not have granted the IETF Trust the right to allow | material may not have granted the IETF Trust the right to allow | |||
| modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
| Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
| the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
| outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
| not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
| it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
| than English. | than English. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology | |||
| 1.2. Changes since RFC 8399 . . . . . . . . . . . . . . . . . 3 | 1.2. Changes since RFC 8399 | |||
| 2. Updates to RFC 5280 . . . . . . . . . . . . . . . . . . . . . 4 | 2. Updates to RFC 5280 | |||
| 2.1. Update in the Introduction (Section 1) . . . . . . . . . 4 | 2.1. Update in the Introduction (Section 1) | |||
| 2.2. Update in Name Constraints (Section 4.2.1.10) . . . . . . 4 | 2.2. Update in Name Constraints (Section 4.2.1.10) | |||
| 2.3. Update in IDNs in GeneralName (Section 7.2) . . . . . . . 5 | 2.3. Update in IDNs in GeneralName (Section 7.2) | |||
| 2.4. Update in IDNs in Distinguished Names (Section 7.3) . . . 6 | 2.4. Update in IDNs in Distinguished Names (Section 7.3) | |||
| 2.5. Update in Internationalized Electronic Mail Addresses | 2.5. Update in Internationalized Electronic Mail Addresses | |||
| (Section 7.5) . . . . . . . . . . . . . . . . . . . . . . 7 | (Section 7.5) | |||
| 3. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 3. Security Considerations | |||
| 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 4. IANA Considerations | |||
| Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 9 | 5. References | |||
| References . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 5.1. Normative References | |||
| Normative References . . . . . . . . . . . . . . . . . . . . . 9 | 5.2. Informative References | |||
| Informative References . . . . . . . . . . . . . . . . . . . . 10 | Acknowledgements | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 | Author's Address | |||
| 1. Introduction | 1. Introduction | |||
| This document updates the Introduction in Section 1, the Name | This document updates the Introduction in Section 1, the Name | |||
| Constraints certificate extension discussion in Section 4.2.1.10, and | Constraints certificate extension discussion in Section 4.2.1.10, and | |||
| the Processing Rules for Internationalized Names in Section 7 of RFC | the Processing Rules for Internationalized Names in Section 7 of RFC | |||
| 5280 [RFC5280] to provide alignment with the 2008 specification for | 5280 [RFC5280] to provide alignment with the 2008 specification for | |||
| Internationalized Domain Names (IDNs) and includes support for | Internationalized Domain Names (IDNs) and includes support for | |||
| internationalized email addresses in X.509 certificates. | internationalized email addresses in X.509 certificates. | |||
| skipping to change at page 3, line 19 ¶ | skipping to change at line 105 ¶ | |||
| The GeneralName structure supports many different name forms, | The GeneralName structure supports many different name forms, | |||
| including otherName for extensibility. RFC 8398 [RFC8398] specifies | including otherName for extensibility. RFC 8398 [RFC8398] specifies | |||
| the SmtpUTF8Mailbox for internationalized email addresses. | the SmtpUTF8Mailbox for internationalized email addresses. | |||
| Note that Internationalized Domain Names in Applications | Note that Internationalized Domain Names in Applications | |||
| specifications published in 2003 (IDNA2003) [RFC3490] and 2008 | specifications published in 2003 (IDNA2003) [RFC3490] and 2008 | |||
| (IDNA2008) [RFC5890] both refer to the Punycode algorithm for | (IDNA2008) [RFC5890] both refer to the Punycode algorithm for | |||
| conversion [RFC3492]. | conversion [RFC3492]. | |||
| Note that characters in the Unicode Category “Symbol, Other” (So) are | Note that characters in the Unicode Category "Symbol, Other" (So) are | |||
| specifically not included in IDNA2003 [RFC3490] or IDNA2008 | specifically not included in IDNA2003 [RFC3490] or IDNA2008 | |||
| [RFC5890]; the derived property values for character in this category | [RFC5890]; the derived property values for characters in this | |||
| are calculated as DISALLOWED. Thus, some characters that are allowed | category are calculated as DISALLOWED. Thus, some characters that | |||
| under the Unicode IDNA Compatibility Processing [UTS46] are not | are allowed under the Unicode IDNA Compatibility Processing [UTS46] | |||
| allowed under this specification. For instance, ☕.example results in | are not allowed under this specification. For instance, ♚.example, | |||
| in a failure under this specification, but it becomes xn--53h.example | which contains the Unicode character U+1F0A1 (BLACK CHESS KING), | |||
| under [UTS46]. | results in a failure under this specification, but it becomes | |||
| xn--45h.example under [UTS46]. | ||||
| 1.1. Terminology | 1.1. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 1.2. Changes since RFC 8399 | 1.2. Changes since RFC 8399 | |||
| In some cases, [RFC8399] required conversion of A-labels to U-labels | In some cases, [RFC8399] required conversion of A-labels to U-labels | |||
| in order to process name constraints for internationalized email | in order to process name constraints for internationalized email | |||
| addresses. This lead to implementation complexity and at least two | addresses. This led to implementation complexity and at least two | |||
| security vulnerabilities. One summary of the vulnerabilities an be | security vulnerabilities. One summary of the vulnerabilities can be | |||
| found in [DDHQ]. Now, all Internationalized Domain Names (IDNs) are | found in [DDHQ]. Now, all IDNs are carried and processed as | |||
| carried and processed as A-labels. | A-labels. | |||
| The Introduction provides a warning to implementers about the | The Introduction provides a warning to implementers about the | |||
| handling of characters in the Unicode Category “Symbol, Other” (So), | handling of characters in the Unicode Category "Symbol, Other" (So), | |||
| which includes emoji characters. | which includes emoji characters. | |||
| 2. Updates to RFC 5280 | 2. Updates to RFC 5280 | |||
| This section provides updates to several paragraphs of [RFC5280]. | This section provides updates to several paragraphs of [RFC5280]. | |||
| For clarity, if the entire section is not replaced, then the original | For clarity, if the entire section is not replaced, then the original | |||
| text and the replacement text are shown. | text and the replacement text are shown. | |||
| 2.1. Update in the Introduction (Section 1) | 2.1. Update in the Introduction (Section 1) | |||
| This update provides references for IDNA2008. | This update provides references for IDNA2008. | |||
| OLD | OLD | |||
| * Enhanced support for internationalized names is specified in | | * Enhanced support for internationalized names is specified in | |||
| Section 7, with rules for encoding and comparing | | Section 7, with rules for encoding and comparing | |||
| Internationalized Domain Names, Internationalized Resource | | Internationalized Domain Names, Internationalized Resource | |||
| Identifiers (IRIs), and distinguished names. These rules are | | Identifiers (IRIs), and distinguished names. These rules are | |||
| aligned with comparison rules established in current RFCs, | | aligned with comparison rules established in current RFCs, | |||
| including [RFC3490], [RFC3987], and [RFC4518]. | | including [RFC3490], [RFC3987], and [RFC4518]. | |||
| NEW | NEW | |||
| * Enhanced support for internationalized names is specified in | | * Enhanced support for internationalized names is specified in | |||
| Section 7, with rules for encoding and comparing | | Section 7, with rules for encoding and comparing | |||
| Internationalized Domain Names, Internationalized Resource | | Internationalized Domain Names, Internationalized Resource | |||
| Identifiers (IRIs), and distinguished names. These rules are | | Identifiers (IRIs), and distinguished names. These rules are | |||
| aligned with comparison rules established in current RFCs, | | aligned with comparison rules established in current RFCs, | |||
| including [RFC3987], [RFC4518], [RFC5890], and [RFC5891]. | | including [RFC3987], [RFC4518], [RFC5890], and [RFC5891]. | |||
| 2.2. Update in Name Constraints (Section 4.2.1.10) | 2.2. Update in Name Constraints (Section 4.2.1.10) | |||
| This update removes the ability to include constraints for a | This update removes the ability to include constraints for a | |||
| particular mailbox. This capability was not used, and removing it | particular mailbox. This capability was not used, and removing it | |||
| allows name constraints to apply to email addresses in rfc822Name and | allows name constraints to apply to email addresses in rfc822Name and | |||
| SmtpUTF8Mailbox [RFC8398] within otherName. | SmtpUTF8Mailbox [RFC8398] within otherName. | |||
| OLD | OLD | |||
| A name constraint for Internet mail addresses MAY specify a | ||||
| particular mailbox, all addresses at a particular host, or all | | A name constraint for Internet mail addresses MAY specify a | |||
| mailboxes in a domain. To indicate a particular mailbox, the | | particular mailbox, all addresses at a particular host, or all | |||
| constraint is the complete mail address. For example, | | mailboxes in a domain. To indicate a particular mailbox, the | |||
| "root@example.com" indicates the root mailbox on the host | | constraint is the complete mail address. For example, | |||
| "example.com". To indicate all Internet mail addresses on a | | "root@example.com" indicates the root mailbox on the host | |||
| particular host, the constraint is specified as the host name. For | | "example.com". To indicate all Internet mail addresses on a | |||
| example, the constraint "example.com" is satisfied by any mail | | particular host, the constraint is specified as the host name. | |||
| address at the host "example.com". To specify any address within a | | For example, the constraint "example.com" is satisfied by any mail | |||
| domain, the constraint is specified with a leading period (as with | | address at the host "example.com". To specify any address within | |||
| URIs). For example, ".example.com" indicates all the Internet mail | | a domain, the constraint is specified with a leading period (as | |||
| addresses in the domain "example.com", but not Internet mail | | with URIs). For example, ".example.com" indicates all the | |||
| addresses on the host "example.com". | | Internet mail addresses in the domain "example.com", but not | |||
| | Internet mail addresses on the host "example.com". | ||||
| NEW | NEW | |||
| A name constraint for Internet mail addresses MAY specify all | | A name constraint for Internet mail addresses MAY specify all | |||
| addresses at a particular host or all mailboxes in a domain. To | | addresses at a particular host or all mailboxes in a domain. To | |||
| indicate all Internet mail addresses on a particular host, the | | indicate all Internet mail addresses on a particular host, the | |||
| constraint is specified as the host name. For example, the | | constraint is specified as the host name. For example, the | |||
| constraint "example.com" is satisfied by any mail address at the | | constraint "example.com" is satisfied by any mail address at the | |||
| host "example.com". To specify any address within a domain, the | | host "example.com". To specify any address within a domain, the | |||
| constraint is specified with a leading period (as with URIs). For | | constraint is specified with a leading period (as with URIs). For | |||
| example, ".example.com" indicates all the Internet mail addresses | | example, ".example.com" indicates all the Internet mail addresses | |||
| in the domain "example.com" but not Internet mail addresses on | | in the domain "example.com" but not Internet mail addresses on the | |||
| the host "example.com". | | host "example.com". | |||
| 2.3. Update in IDNs in GeneralName (Section 7.2) | 2.3. Update in IDNs in GeneralName (Section 7.2) | |||
| This update aligns with IDNA2008. Since all of Section 7.2 is | This update aligns with IDNA2008. Since all of Section 7.2 of | |||
| replaced, the OLD text is not provided. | [RFC5280] is replaced, the OLD text is not provided. | |||
| NEW | NEW | |||
| Internationalized Domain Names (IDNs) may be included in certificates | ||||
| and CRLs in the subjectAltName and issuerAltName extensions, name | ||||
| constraints extension, authority information access extension, | ||||
| subject information access extension, CRL distribution points | ||||
| extension, and issuing distribution point extension. Each of these | ||||
| extensions uses the GeneralName type; one choice in GeneralName is | ||||
| the dNSName field, which is defined as type IA5String. | ||||
| IA5String is limited to the set of ASCII characters. To accommodate | | Internationalized Domain Names (IDNs) may be included in | |||
| IDNs, U-labels are converted to A-labels. The A-label is the | | certificates and CRLs in the subjectAltName and issuerAltName | |||
| encoding of the U-label according to the Punycode algorithm [RFC3492] | | extensions, name constraints extension, authority information | |||
| with the ACE prefix "xn--" added at the beginning of the string. | | access extension, subject information access extension, CRL | |||
| | distribution points extension, and issuing distribution point | ||||
| When comparing DNS names for equality, conforming implementations | | extension. Each of these extensions uses the GeneralName type; | |||
| MUST perform a case-insensitive exact match on the entire DNS name. | | one choice in GeneralName is the dNSName field, which is defined | |||
| When evaluating name constraints, conforming implementations MUST | | as type IA5String. | |||
| perform a case-insensitive exact match on a label-by-label basis. As | | | |||
| noted in Section 4.2.1.10, any DNS name that may be constructed by | | IA5String is limited to the set of ASCII characters. To | |||
| adding labels to the left-hand side of the domain name given as the | | accommodate IDNs, U-labels are converted to A-labels. The A-label | |||
| constraint is considered to fall within the indicated subtree. | | is the encoding of the U-label according to the Punycode algorithm | |||
| | [RFC3492] with the ACE prefix "xn--" added at the beginning of the | ||||
| Implementations that have a user interface SHOULD convert IDNs to | | string. | |||
| Unicode for display. Specifically, conforming implementations | | | |||
| convert A-labels to U-labels for display purposes. | | When comparing DNS names for equality, conforming implementations | |||
| | MUST perform a case-insensitive exact match on the entire DNS | ||||
| Implementation consideration: There are increased memory requirements | | name. When evaluating name constraints, conforming | |||
| for IDNs. An IDN ACE label will begin with the four additional | | implementations MUST perform a case-insensitive exact match on a | |||
| characters "xn--", and an IDN can require as many as five ASCII | | label-by-label basis. As noted in Section 4.2.1.10, any DNS name | |||
| characters to specify a single international character. | | that may be constructed by adding labels to the left-hand side of | |||
| | the domain name given as the constraint is considered to fall | ||||
| | within the indicated subtree. | ||||
| | | ||||
| | Implementations that have a user interface SHOULD convert IDNs to | ||||
| | Unicode for display. Specifically, conforming implementations | ||||
| | convert A-labels to U-labels for display purposes. | ||||
| | | ||||
| | Implementation consideration: There are increased memory | ||||
| | requirements for IDNs. An IDN ACE label will begin with the four | ||||
| | additional characters "xn--", and an IDN can require as many as | ||||
| | five ASCII characters to specify a single international character. | ||||
| 2.4. Update in IDNs in Distinguished Names (Section 7.3) | 2.4. Update in IDNs in Distinguished Names (Section 7.3) | |||
| This update aligns with IDNA2008. | This update aligns with IDNA2008. | |||
| OLD | OLD | |||
| Domain Names may also be represented as distinguished names using | | Domain Names may also be represented as distinguished names using | |||
| domain components in the subject field, the issuer field, the | | domain components in the subject field, the issuer field, the | |||
| subjectAltName extension, or the issuerAltName extension. As with | | subjectAltName extension, or the issuerAltName extension. As with | |||
| the dNSName in the GeneralName type, the value of this attribute is | | the dNSName in the GeneralName type, the value of this attribute | |||
| defined as an IA5String. Each domainComponent attribute represents a | | is defined as an IA5String. Each domainComponent attribute | |||
| single label. To represent a label from an IDN in the distinguished | | represents a single label. To represent a label from an IDN in | |||
| name, the implementation MUST perform the "ToASCII" label conversion | | the distinguished name, the implementation MUST perform the | |||
| specified in Section 4.1 of RFC 3490. The label SHALL be considered | | "ToASCII" label conversion specified in Section 4.1 of RFC 3490. | |||
| a "stored string". That is, the AllowUnassigned flag SHALL NOT be | | The label SHALL be considered a "stored string". That is, the | |||
| set. | | AllowUnassigned flag SHALL NOT be set. | |||
| NEW | NEW | |||
| Domain names may also be represented as distinguished names using | ||||
| domain components in the subject field, the issuer field, the | | Domain names may also be represented as distinguished names using | |||
| subjectAltName extension, or the issuerAltName extension. As with | | domain components in the subject field, the issuer field, the | |||
| the dNSName in the GeneralName type, the value of this attribute is | | subjectAltName extension, or the issuerAltName extension. As with | |||
| defined as an IA5String. Each domainComponent attribute represents a | | the dNSName in the GeneralName type, the value of this attribute | |||
| single label. To represent a label from an IDN in the distinguished | | is defined as an IA5String. Each domainComponent attribute | |||
| name, the implementation MUST convert all U-labels to A-labels. | | represents a single label. To represent a label from an IDN in | |||
| | the distinguished name, the implementation MUST convert all | ||||
| | U-labels to A-labels. | ||||
| 2.5. Update in Internationalized Electronic Mail Addresses | 2.5. Update in Internationalized Electronic Mail Addresses | |||
| (Section 7.5) | (Section 7.5) | |||
| This update aligns with IDNA2008 and [RFC8398]. Since all of | This update aligns with IDNA2008 and [RFC8398]. Since all of | |||
| Section 7.5 is replaced, the OLD text is not provided. | Section 7.5 of [RFC5280] is replaced, the OLD text is not provided. | |||
| NEW | NEW | |||
| Electronic Mail addresses may be included in certificates and CRLs in | | Electronic Mail addresses may be included in certificates and CRLs | |||
| the subjectAltName and issuerAltName extensions, name constraints | | in the subjectAltName and issuerAltName extensions, name | |||
| extension, authority information access extension, subject | | constraints extension, authority information access extension, | |||
| information access extension, issuing distribution point extension, | | subject information access extension, issuing distribution point | |||
| or CRL distribution points extension. Each of these extensions uses | | extension, or CRL distribution points extension. Each of these | |||
| the GeneralName construct. If the email address includes an IDN but | | extensions uses the GeneralName construct. If the email address | |||
| the local-part of the email address can be represented in ASCII, then | | includes an IDN but the local-part of the email address can be | |||
| the email address is placed in the rfc822Name choice of GeneralName, | | represented in ASCII, then the email address is placed in the | |||
| which is defined as type IA5String. If the local-part of the | | rfc822Name choice of GeneralName, which is defined as type | |||
| internationalized email address cannot be represented in ASCII, then | | IA5String. If the local-part of the internationalized email | |||
| the internationalized email address is placed in the otherName choice | | address cannot be represented in ASCII, then the internationalized | |||
| of GeneralName using the conventions in RFC 8398 [RFC8398]. | | email address is placed in the otherName choice of GeneralName | |||
| | using the conventions in RFC 8398 [RFC8398]. | ||||
| When the host-part contains an IDN, conforming implementations MUST | | | |||
| convert all U-labels to A-labels. | | When the host-part contains an IDN, conforming implementations | |||
| | MUST convert all U-labels to A-labels. | ||||
| 7.5.1. Local-Part Contains Only ASCII Characters | | | |||
| | 7.5.1. Local-Part Contains Only ASCII Characters | ||||
| Two email addresses are considered to match if: | | | |||
| | Two email addresses are considered to match if: | ||||
| 1) The local-part of each name is an exact match, AND | | | |||
| | 1) The local-part of each name is an exact match, AND | ||||
| 2) The host-part of each name matches using a case-insensitive | | | |||
| ASCII comparison. | | 2) The host-part of each name matches using a case-insensitive | |||
| | ASCII comparison. | ||||
| Implementations that have a user interface SHOULD convert the | | | |||
| host-part of internationalized email addresses specified in these | | Implementations that have a user interface SHOULD convert the | |||
| extensions to Unicode before display. Specifically, conforming | | host-part of internationalized email addresses specified in these | |||
| implementations convert A-labels to U-labels for display purposes. | | extensions to Unicode before display. Specifically, conforming | |||
| | implementations convert A-labels to U-labels for display purposes. | ||||
| 7.5.2. Local-Part Contains Non-ASCII Characters | | | |||
| When the local-part contains non-ASCII characters, conforming | | 7.5.2. Local-Part Contains Non-ASCII Characters | |||
| implementations MUST place the internationalized email address in the | | | |||
| SmtpUTF8Mailbox within the otherName choice of GeneralName as | | When the local-part contains non-ASCII characters, conforming | |||
| specified in Section 3 of RFC 8398 [RFC8398]. Note that the UTF8 | | implementations MUST place the internationalized email address in | |||
| encoding of the internationalized email address MUST NOT contain a | | the SmtpUTF8Mailbox within the otherName choice of GeneralName as | |||
| Byte-Order-Mark (BOM) [RFC3629] to aid comparison. The email address | | specified in Section 3 of RFC 8398 [RFC8398]. Note that the UTF8 | |||
| local-part within the SmtpUTF8Mailbox MUST conform to the | | encoding of the internationalized email address MUST NOT contain a | |||
| requirements of [RFC6530] and [RFC6531]. | | Byte-Order-Mark (BOM) [RFC3629] to aid comparison. The email | |||
| | address local-part within the SmtpUTF8Mailbox MUST conform to the | ||||
| Two email addresses are considered to match if: | | requirements of [RFC6530] and [RFC6531]. | |||
| | | ||||
| 1) The local-part of each name is an exact match, AND | | Two email addresses are considered to match if: | |||
| | | ||||
| 2) The host-part of each name matches using a case-insensitive | | 1) The local-part of each name is an exact match, AND | |||
| ASCII comparison. | | | |||
| | 2) The host-part of each name matches using a case-insensitive | ||||
| Implementations that have a user interface SHOULD convert the | | ASCII comparison. | |||
| host-part of internationalized email addresses specified in these | | | |||
| extensions to Unicode before display. Specifically, conforming | | Implementations that have a user interface SHOULD convert the | |||
| implementations convert A-labels to U-labels for display purposes. | | host-part of internationalized email addresses specified in these | |||
| | extensions to Unicode before display. Specifically, conforming | ||||
| | implementations convert A-labels to U-labels for display purposes. | ||||
| 3. Security Considerations | 3. Security Considerations | |||
| The Security Consideration related to IDNA2008 in Section 4 of | The Security Considerations related to internationalized names in | |||
| [RFC5890] are relevant to this specification. | Section 4 of [RFC5890] are relevant to this specification. | |||
| Conforming CAs SHOULD ensure that IDNs are valid according to | Conforming Certification Authorities (CAs) SHOULD ensure that IDNs | |||
| IDNA2008, which is defined in [RFC5890], [RFC5891], [RFC5892], | are valid according to IDNA2008, which is defined in [RFC5890], | |||
| [RFC5893], [RFC5894], and the updates to these documents. Failure to | [RFC5891], [RFC5892], [RFC5893], [RFC5894], and the updates to these | |||
| use valid A-labels may yield a domain name that cannot be correctly | documents. Failure to use valid A-labels may yield a domain name | |||
| represented in the Domain Name System (DNS). In addition, the CA/ | that cannot be correctly represented in the Domain Name System (DNS). | |||
| Browser Forum offers some guidance regarding internal server names in | In addition, the CA/Browser Forum offers some guidance regarding | |||
| certificates [CABF]. | internal server names in certificates [CABF]. | |||
| An earlier version of this specification [RFC8399] required | An earlier version of this specification [RFC8399] required | |||
| conversion of A-labels to U-labels in order to process name | conversion of A-labels to U-labels in order to process name | |||
| constraints for internationalized email addresses in SmtpUTF8Mailbox | constraints for internationalized email addresses in SmtpUTF8Mailbox | |||
| other names. This lead to implementation complexity and at least two | other names. This lead to implementation complexity and at least two | |||
| security vulnerabilities. Now, all Internationalized Domain Names | security vulnerabilities. Now, all IDNs are carried and processed as | |||
| (IDNs) are carried and processed as A-labels. | A-labels. | |||
| 4. IANA Considerations | 4. IANA Considerations | |||
| This document has no IANA actions. | This document has no IANA actions. | |||
| Acknowledgements | 5. References | |||
| Thanks to David Benjamin and Wei Chuang for identifying the issue and | ||||
| a solution. | ||||
| Thanks to Takahiro Nemoto, John Klensin, Mike Ounsworth, and Orie | ||||
| Steele for their careful review and thoughtful comments. | ||||
| References | ||||
| Normative References | 5.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3492] Costello, A., "Punycode: A Bootstring encoding of Unicode | [RFC3492] Costello, A., "Punycode: A Bootstring encoding of Unicode | |||
| for Internationalized Domain Names in Applications | for Internationalized Domain Names in Applications | |||
| (IDNA)", RFC 3492, DOI 10.17487/RFC3492, March 2003, | (IDNA)", RFC 3492, DOI 10.17487/RFC3492, March 2003, | |||
| <https://www.rfc-editor.org/rfc/rfc3492>. | <https://www.rfc-editor.org/info/rfc3492>. | |||
| [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | |||
| 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | |||
| 2003, <https://www.rfc-editor.org/rfc/rfc3629>. | 2003, <https://www.rfc-editor.org/info/rfc3629>. | |||
| [RFC3987] Duerst, M. and M. Suignard, "Internationalized Resource | [RFC3987] Duerst, M. and M. Suignard, "Internationalized Resource | |||
| Identifiers (IRIs)", RFC 3987, DOI 10.17487/RFC3987, | Identifiers (IRIs)", RFC 3987, DOI 10.17487/RFC3987, | |||
| January 2005, <https://www.rfc-editor.org/rfc/rfc3987>. | January 2005, <https://www.rfc-editor.org/info/rfc3987>. | |||
| [RFC4518] Zeilenga, K., "Lightweight Directory Access Protocol | [RFC4518] Zeilenga, K., "Lightweight Directory Access Protocol | |||
| (LDAP): Internationalized String Preparation", RFC 4518, | (LDAP): Internationalized String Preparation", RFC 4518, | |||
| DOI 10.17487/RFC4518, June 2006, | DOI 10.17487/RFC4518, June 2006, | |||
| <https://www.rfc-editor.org/rfc/rfc4518>. | <https://www.rfc-editor.org/info/rfc4518>. | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
| (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
| <https://www.rfc-editor.org/rfc/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
| [RFC5890] Klensin, J., "Internationalized Domain Names for | [RFC5890] Klensin, J., "Internationalized Domain Names for | |||
| Applications (IDNA): Definitions and Document Framework", | Applications (IDNA): Definitions and Document Framework", | |||
| RFC 5890, DOI 10.17487/RFC5890, August 2010, | RFC 5890, DOI 10.17487/RFC5890, August 2010, | |||
| <https://www.rfc-editor.org/rfc/rfc5890>. | <https://www.rfc-editor.org/info/rfc5890>. | |||
| [RFC5891] Klensin, J., "Internationalized Domain Names in | [RFC5891] Klensin, J., "Internationalized Domain Names in | |||
| Applications (IDNA): Protocol", RFC 5891, | Applications (IDNA): Protocol", RFC 5891, | |||
| DOI 10.17487/RFC5891, August 2010, | DOI 10.17487/RFC5891, August 2010, | |||
| <https://www.rfc-editor.org/rfc/rfc5891>. | <https://www.rfc-editor.org/info/rfc5891>. | |||
| [RFC5892] Faltstrom, P., Ed., "The Unicode Code Points and | [RFC5892] Faltstrom, P., Ed., "The Unicode Code Points and | |||
| Internationalized Domain Names for Applications (IDNA)", | Internationalized Domain Names for Applications (IDNA)", | |||
| RFC 5892, DOI 10.17487/RFC5892, August 2010, | RFC 5892, DOI 10.17487/RFC5892, August 2010, | |||
| <https://www.rfc-editor.org/rfc/rfc5892>. | <https://www.rfc-editor.org/info/rfc5892>. | |||
| [RFC5893] Alvestrand, H., Ed. and C. Karp, "Right-to-Left Scripts | [RFC5893] Alvestrand, H., Ed. and C. Karp, "Right-to-Left Scripts | |||
| for Internationalized Domain Names for Applications | for Internationalized Domain Names for Applications | |||
| (IDNA)", RFC 5893, DOI 10.17487/RFC5893, August 2010, | (IDNA)", RFC 5893, DOI 10.17487/RFC5893, August 2010, | |||
| <https://www.rfc-editor.org/rfc/rfc5893>. | <https://www.rfc-editor.org/info/rfc5893>. | |||
| [RFC6530] Klensin, J. and Y. Ko, "Overview and Framework for | [RFC6530] Klensin, J. and Y. Ko, "Overview and Framework for | |||
| Internationalized Email", RFC 6530, DOI 10.17487/RFC6530, | Internationalized Email", RFC 6530, DOI 10.17487/RFC6530, | |||
| February 2012, <https://www.rfc-editor.org/rfc/rfc6530>. | February 2012, <https://www.rfc-editor.org/info/rfc6530>. | |||
| [RFC6531] Yao, J. and W. Mao, "SMTP Extension for Internationalized | [RFC6531] Yao, J. and W. Mao, "SMTP Extension for Internationalized | |||
| Email", RFC 6531, DOI 10.17487/RFC6531, February 2012, | Email", RFC 6531, DOI 10.17487/RFC6531, February 2012, | |||
| <https://www.rfc-editor.org/rfc/rfc6531>. | <https://www.rfc-editor.org/info/rfc6531>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8398] Melnikov, A., Ed. and W. Chuang, Ed., "Internationalized | [RFC8398] Melnikov, A., Ed. and W. Chuang, Ed., "Internationalized | |||
| Email Addresses in X.509 Certificates", RFC 8398, | Email Addresses in X.509 Certificates", RFC 8398, | |||
| DOI 10.17487/RFC8398, May 2018, | DOI 10.17487/RFC8398, May 2018, | |||
| <https://www.rfc-editor.org/rfc/rfc8398>. | <https://www.rfc-editor.org/info/rfc8398>. | |||
| Informative References | 5.2. Informative References | |||
| [CABF] CA/Browser Forum, "Internal Server Names and IP Address | [CABF] CA/Browser Forum, "Internal Server Names and IP Address | |||
| Requirements for SSL: Guidance on the Deprecation of | Requirements for SSL: Guidance on the Deprecation of | |||
| Internal Server Names and Reserved IP Addresses provided | Internal Server Names and Reserved IP Addresses provided | |||
| by the CA/Browser Forum", Version 1.0, June 2012, | by the CA/Browser Forum", Version 1.0, June 2012, | |||
| <https://cabforum.org/internal-names/>. | <https://cabforum.org/internal-names/>. | |||
| [DDHQ] Datadog Security Labs, "The OpenSSL punycode vulnerability | [DDHQ] Datadog Security Labs, "The OpenSSL punycode vulnerability | |||
| (CVE-2022-3602): Overview, detection, exploitation, and | (CVE-2022-3602): Overview, detection, exploitation, and | |||
| remediation", 1 November 2022, | remediation", 1 November 2022, | |||
| <https://securitylabs.datadoghq.com/articles/openssl- | <https://securitylabs.datadoghq.com/articles/openssl- | |||
| november-1-vulnerabilities/>. | november-1-vulnerabilities/>. | |||
| [RFC3490] Faltstrom, P., Hoffman, P., and A. Costello, | [RFC3490] Faltstrom, P., Hoffman, P., and A. Costello, | |||
| "Internationalizing Domain Names in Applications (IDNA)", | "Internationalizing Domain Names in Applications (IDNA)", | |||
| RFC 3490, DOI 10.17487/RFC3490, March 2003, | RFC 3490, DOI 10.17487/RFC3490, March 2003, | |||
| <https://www.rfc-editor.org/rfc/rfc3490>. | <https://www.rfc-editor.org/info/rfc3490>. | |||
| [RFC5894] Klensin, J., "Internationalized Domain Names for | [RFC5894] Klensin, J., "Internationalized Domain Names for | |||
| Applications (IDNA): Background, Explanation, and | Applications (IDNA): Background, Explanation, and | |||
| Rationale", RFC 5894, DOI 10.17487/RFC5894, August 2010, | Rationale", RFC 5894, DOI 10.17487/RFC5894, August 2010, | |||
| <https://www.rfc-editor.org/rfc/rfc5894>. | <https://www.rfc-editor.org/info/rfc5894>. | |||
| [RFC8399] Housley, R., "Internationalization Updates to RFC 5280", | [RFC8399] Housley, R., "Internationalization Updates to RFC 5280", | |||
| RFC 8399, DOI 10.17487/RFC8399, May 2018, | RFC 8399, DOI 10.17487/RFC8399, May 2018, | |||
| <https://www.rfc-editor.org/rfc/rfc8399>. | <https://www.rfc-editor.org/info/rfc8399>. | |||
| [UTS46] Davis, M. and M. Suignard, "Unicode Technical Standard | [UTS46] Davis, M. and M. Suignard, "Unicode Technical Standard | |||
| #46: Unicode IDNA Compatibility Processing", Revision 31, | #46: Unicode IDNA Compatibility Processing", Revision 31, | |||
| The Unicode Consortium, Mountain View, September 2023, | The Unicode Consortium, Mountain View, September 2023, | |||
| <https://www.unicode.org/reports/tr46>. | <https://www.unicode.org/reports/tr46>. | |||
| Acknowledgements | ||||
| Thanks to David Benjamin and Wei Chuang for identifying the issue and | ||||
| a solution. | ||||
| Thanks to Takahiro Nemoto, John Klensin, Mike Ounsworth, and Orie | ||||
| Steele for their careful review and thoughtful comments. | ||||
| Author's Address | Author's Address | |||
| Russ Housley | Russ Housley | |||
| Vigil Security, LLC | Vigil Security, LLC | |||
| Herndon, VA, | Herndon, VA | |||
| United States of America | United States of America | |||
| Email: housley@vigilsec.com | Email: housley@vigilsec.com | |||
| End of changes. 49 change blocks. | ||||
| 232 lines changed or deleted | 239 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||