<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc compact="yes"?>
<?rfc strict="yes"?>
<?rfc symrefs="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<rfc category="std" docName="draft-miller-xmpp-posh-prooftype-03" ipr="trust200902">
  <front>
    <title abbrev="XMPP POSH Prooftype">Using PKIX over Secure HTTP (POSH) as a Prooftype for XMPP Domain Name Associations</title>
    <author initials="M." surname="Miller" fullname="Matthew Miller">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>1899 Wynkoop Street, Suite 600</street>
          <city>Denver</city>
          <region>CO</region>
          <code>80202</code>
          <country>USA</country>
        </postal>
        <email>mamille2@cisco.com</email>
      </address>
    </author>
    <author initials="P." surname="Saint-Andre" fullname="Peter Saint-Andre">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>1899 Wynkoop Street, Suite 600</street>
          <city>Denver</city>
          <region>CO</region>
          <code>80202</code>
          <country>USA</country>
        </postal>
        <email>psaintan@cisco.com</email>
      </address>
    </author>
    <date month="February" day="22" year="2013"/>
    <area>RAI</area>
    <workgroup>XMPP</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>Extensible Messaging and Presence Protocol</keyword>
    <keyword>Jabber</keyword>
    <keyword>federation</keyword>
    <abstract>
      <t>This document defines a prooftype involving PKIX over Secure HTTP (POSH) for associating a domain name with an XML stream in the Extensible Messaging and Presence Protocol (XMPP).  It also defines a method involving HTTPS redirects (appropriate for use with the POSH prooftype) for securely delegating a source domain to a derived domain in XMPP.</t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction" anchor="intro">
      <t>The <xref target="XMPP-DNA"/> specification defines a framework for secure delegation and strong domain name associations (DNA) in the Extensible Messaging and Presence Protocol (XMPP).  This document defines a DNA prooftype using PKIX certificates obtained over secure HTTP ("POSH"), as well as a secure delegation method, based on HTTPS redirects, that is appropriate for use with the POSH prooftype.</t>
      <t>The rationale for POSH is driven by current operational realities.  It is effectively impossible for a hosting service to provide and maintain PKIX certificates <xref target="RFC5280"/> that include the appropriate identifiers <xref target="RFC6125"/> for each hosted domain.  It is true that DNS-based technologies are emerging for secure delegation, in the form of DNS Security (<xref target="RFC4033"/> and <xref target="RFC6698"/>); however, these technologies are not yet widely deployed and might not be deployed in the near future for domains outside the most common top-level domains (e.g., ".COM", ".NET", ".EDU").  Because the XMPP community wishes to deploy secure delegation and strong domain name associations as widely and as quickly as possible, this document specifies how to use secure HTTP (<xref target="RFC2616"/> and <xref target="RFC2818"/>) and PKIX certificates <xref target="RFC5280"/> to verify that a domain is delegated to a hosting provider and also establish a strong assocation between a domain name and an XML stream.</t>
    </section>
    <section title="Terminology" anchor="terms">
      <t>This document inherits XMPP terminology from <xref target="RFC6120"/> and security terminology from <xref target="RFC5280"/>.  The terms "source domain", "derived domain", "reference identifier", and "presented identifier" are used as defined in the "CertID" specification <xref target="RFC6125"/>.</t>
      <t>This document is applicable to connections made from an XMPP client to an XMPP server ("_xmpp-client._tcp") or between XMPP servers ("_xmpp-server._tcp").  In both cases, the XMPP initiating entity acts as a TLS client and the XMPP receiving entity acts as a TLS server.  Therefore, to simplify discussion this document uses "_xmpp-client._tcp" to describe both cases, unless otherwise indicated.</t>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target="RFC2119"/>.</t>
    </section>
    <section title="Prooftype" anchor="prooftype">
      <t>POSH stands for PKIX Over Secure HTTP: the server's proof consist of a PKIX certificate <xref target="RFC5280"/>, the certificate is checked according to the rules from <xref target="RFC6120"/> and <xref target="RFC6125"/>, the client obtains its verification material by retrieving the certificate over HTTPS (<xref target="RFC2616"/> and <xref target="RFC2818"/>) from a well-known URI <xref target="RFC5785"/>, and secure DNS is not necessary since the HTTPS retrieval mechanism relies on the chain of trust based on the public key infrastructure.</t>
      <t>The process for retrieving a PKIX certificate over secure HTTP is as follows.</t>
      <t>
        <list style="numbers">
          <t>The initiating entity performs an HTTPS GET at the source domain to the path "/.well-known/posh._&lt;service&gt;._tcp.json"; where "_&lt;service&gt;" MUST be either "_xmpp-client" for XMPP client-to-server connections or "_xmpp-server" for XMPP server-to-server connections.  Here is an example:
            <figure><artwork><![CDATA[
HTTP GET /.well-known/posh._xmpp-server._tcp.json HTTP/1.1
Host: im.example.com
              ]]></artwork></figure>
          <vspace blankLines="1"/></t>
          <t>If the source domain HTTPS server has a certificate for the requested path, it MUST respond with a success status code, with the message body as a JSON Web Key Set (JWK Set) <xref target="JOSE-JWK"/>, which itself contains at least one JWK of type "PKIX" <xref target="JOSE-PKIX-KEY"/> that the XMPP server at the source domain will present during the TLS negotiation phase of XMPP stream setup (linebreaks and whitespace added for readability).  Here is an example:
            <figure>
              <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 806

{
  "keys":[
    {
      "kty":"PKIX",
      "x5c":[
        "MIICPTCCAaYCCQDDVeBaBmWC_jANBgkqhkiG9w0BAQUFADBjMQswCQY
         DVQQGEwJVUzERMA8GA1UECBMIQ29sb3JhZG8xDzANBgNVBAcTBkRlbn
         ZlcjEXMBUGA1UEChMOaW0uZXhhbXBsZS5jb20xFzAVBgNVBAMTDmltL
         mV4YW1wbGUuY29tMB4XDTEyMDYxMTIxNTQ0NFoXDTIyMDYwOTIxNTQ0
         NFowYzELMAkGA1UEBhMCVVMxETAPBgNVBAgTCENvbG9yYWRvMQ8wDQY
         DVQQHEwZEZW52ZXIxFzAVBgNVBAoTDmltLmV4YW1wbGUuY29tMRcwFQ
         YDVQQDEw5pbS5leGFtcGxlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBj
         QAwgYkCgYEA4hoKhi_B07eQH-1NB9gWiNFDT__AbTHQOEC0AOr4Gh_o
         9PUp7kD0gklU4uv7rSAhAyCe4WaOiQ_HShzEryGfHiZmWht0BaYmj19
         iuPWRecZOXWqKZji9NtAxn9l3kdon_YLJcrPGyNTGK66-ggNaqy8LkQ
         QpI4rff60yHHZ_0XkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQDcwiu30
         bSMlykWYz-tTDSlQ3wLSVB9RsR8jXmJvMo7y7icXwg54a9M3xipjZtr
         fAhYM5I5iqUTQPki6s26n9SQpRm5bonEFDA3WGwrwma35biP9-NSBWz
         SaDF8AztwFNKXXl6_U6hWwG05G_NdeS11gpww9NUDraJgVoDpRK04tg"
      ]
    }
  ]
}
              ]]></artwork>
          </figure>
          <vspace blankLines="1"/></t>
        </list>
      </t>
    </section>
    <section title="Secure Delegation" anchor="delegation">
      <t>When PKIX Over Secure HTTP (POSH) is the DNA prooftype, it is possible to use HTTPS redirects in determining if a domain is securely delegated, as follows:</t>
      <t>
        <list style="numbers">
          <t>The initiating entity performs an HTTPS GET at the source domain to the path "/.well-known/posh._&lt;service&gt;._tcp.json"; where "_&lt;service&gt;" MUST be either "_xmpp-client" for XMPP client-to-server connections or "_xmpp-server" for XMPP server-to-server connections.  Here is an example:
            <figure><artwork><![CDATA[
GET /.well-known/posh._xmpp-server._tcp.json HTTP/1.1
Host: im.example.com
              ]]></artwork></figure>
          <vspace blankLines="1"/></t>
          <t>If the source domain HTTPS server has delegated to a derived domain, it MUST respond with one of the redirect mechanisms provided by HTTP (e.g., using the 302, 303, 307, or 308 response).  The 'Location' header MUST specify an HTTPS URL, where the hostname and port is the derived domain HTTPS server, and the path MUST match the pattern "_&lt;service&gt;._tcp.json"; where "_&lt;service&gt;" MUST be identical to the "_&lt;service&gt;" portion of the original request (line breaks added for readability).  Here is an example:
            <figure><artwork><![CDATA[
HTTP/1.1 302 Found
Location: https://hosting.example.net/.well-known
          /posh._xmpp-server._tcp.json
              ]]></artwork></figure>
          <vspace blankLines="1"/></t>
          <t>The initiating entity performs an HTTPS GET to the URL specified in the 'Location' header.  Here is an example:
            <figure><artwork><![CDATA[
GET /.well-known/posh._xmpp-server._tcp.json HTTP/1.1
Host: hosting.example.net
              ]]></artwork></figure>
          <vspace blankLines="1"/></t>
          <t>If the derived domain HTTPS server has a certificate, it MUST respond with a success status code, with the message body as a JSON Web Key Set (JWK Set) <xref target="JOSE-JWK"/>, which itself contains at least one JWK of type "PKIX" <xref target="JOSE-PKIX-KEY"/> that the XMPP server at the derived domain will present during the TLS negotiation phase of XMPP stream setup.  Here is an example:
            <figure><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 806

{
  "keys":[
    {
      "kty":"PKIX",
      "x5c":[
        "MIICPTCCAaYCCQDDVeBaBmWC_jANBgkqhkiG9w0BAQUFADBjMQswCQY
         DVQQGEwJVUzERMA8GA1UECBMIQ29sb3JhZG8xDzANBgNVBAcTBkRlbn
         ZlcjEXMBUGA1UEChMOaW0uZXhhbXBsZS5jb20xFzAVBgNVBAMTDmltL
         mV4YW1wbGUuY29tMB4XDTEyMDYxMTIxNTQ0NFoXDTIyMDYwOTIxNTQ0
         NFowYzELMAkGA1UEBhMCVVMxETAPBgNVBAgTCENvbG9yYWRvMQ8wDQY
         DVQQHEwZEZW52ZXIxFzAVBgNVBAoTDmltLmV4YW1wbGUuY29tMRcwFQ
         YDVQQDEw5pbS5leGFtcGxlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBj
         QAwgYkCgYEA4hoKhi_B07eQH-1NB9gWiNFDT__AbTHQOEC0AOr4Gh_o
         9PUp7kD0gklU4uv7rSAhAyCe4WaOiQ_HShzEryGfHiZmWht0BaYmj19
         iuPWRecZOXWqKZji9NtAxn9l3kdon_YLJcrPGyNTGK66-ggNaqy8LkQ
         QpI4rff60yHHZ_0XkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQDcwiu30
         bSMlykWYz-tTDSlQ3wLSVB9RsR8jXmJvMo7y7icXwg54a9M3xipjZtr
         fAhYM5I5iqUTQPki6s26n9SQpRm5bonEFDA3WGwrwma35biP9-NSBWz
         SaDF8AztwFNKXXl6_U6hWwG05G_NdeS11gpww9NUDraJgVoDpRK04tg"
      ]
    }
  ]
}
              ]]></artwork></figure>
          <vspace blankLines="1"/></t>
        </list>
      </t>
      <section title="Permanent versus Temporary Redirects" anchor="delegation-redirects">
        <t>Care needs to be taken with which redirect mechanism is used for delegation. Clients might remember the redirected location in place of the original, which can lead to verification mismatches when a source domain is migrated to a different delegated domain.</t>
        <t>To mitigate this concern, source domains SHOULD use only temporary redirect mechanisms, such as HTTP status codes 302 (Found) and 307 (Temporary Redirect). Clients MAY treat any redirect as temporary, ignoring the specific semantics for 301 (Moved Permanently) or 308 (Permanent Redirect) <xref target="HTTP-STATUS-308"/>.</t>
      </section>
    </section>
    <section title="Order of Operations" anchor="order">
      <t>The processes for the POSH prooftype MUST be complete before the TLS handshake over the XMPP connection finishes, so that the client can perform verification of reference identities. Ideally a TLS client ought to perform the POSH processes in parallel with other XMPP session establishment processes; this is sometimes called the "happy eyeballs" approach, similar to <xref target='RFC6555'/> for IPv4 and IPv6.  However, a TLS client might delay as much of the XMPP session establishment as it needs to in order to gather all of the POSH-based verification material. For instance, a TLS client might not open the socket connection until it retrieves the PKIX certificates.</t>
    </section>
    <section title="Caching Results" anchor="caching">
      <t>Ideally, the initiating entity relies on the expiration time of the certificate obtained via POSH, and not on HTTP caching mechanisms.  To that end, the HTTPS servers for source and derived domains SHOULD specify a 'Cache-Control' header indicating a short duration (e.g., max-age=60) or "no-cache" to indicate the response (redirect or content) is not appropriate to cache at the HTTP level.</t>
    </section>
    <section title="Alternates and Roll-over" anchor="rollover">
      <t>To indicate alternate PKIX certificates, such as when an existing certificate will soon expire, the returned JWK Set can contain multiple "PKIX" JWK objects. The JWK Set SHOULD be ordered with the most relevant certificate first as determined by the XMPP server operator (e.g., the certificate soonest to expire), followed by the next most relevant certificate (e.g., the renewed certificate).  Here is an example:</t>
      <figure>
        <artwork><![CDATA[
{
  "keys":[
    {
      "kty":"PKIX",
      "x5c":[
        "MIICYTCCAcqgAwIBAgIJAK_Lh7cXMZvdMA0GCSqGSIb3DQEBBQUAME
        8xCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhDb2xvcmFkbzEPMA0GA1UEB
        xMGRGVudmVyMRwwGgYDVQQDExNob3N0aW5nLmV4YW1wbGUubmV0MB4X
        DTEzMDIwNzE4MjY0MFoXDTIzMDIwNTE4MjY0MFowTzELMAkGA1UEBhM
        CVVMxETAPBgNVBAgTCENvbG9yYWRvMQ8wDQYDVQQHEwZEZW52ZXIxHD
        AaBgNVBAMTE2hvc3RpbmcuZXhhbXBsZS5uZXQwgZ8wDQYJKoZIhvcNA
        QEBBQADgY0AMIGJAoGBAOLjqQxacJ-DQNOuVxNzoBBRyLku7V_ZEpFY
        8SHPyrK38I7Q3lWnEpAyUanpMClDMV0B_EJQDeueJgWkyrgd6bDZLvi
        _UtGha9E4q-IpHO6cM_cSE9d_oZuCcdGV8HHjK9m1xHUEyeTGAm1tMA
        m7j_BNFdhETkUqTfFPggFdMhAXAgMBAAGjRTBDMEEGA1UdEQQ6MDigI
        QYIKwYBBQUHCAWgFQwTaG9zdGluZy5leGFtcGxlLm5ldIITaG9zdGlu
        Zy5leGFtcGxlLm5ldDANBgkqhkiG9w0BAQUFAAOBgQAaz81gC5KqFQo
        WGf8mJz_mYx2pW6i-QeYw-BqpdAgdkrRvOHlJ4pYRhkajKfdiauvHcM
        ZDPWuuSm7jzIEOPqZdzYXkffgfr4br5UOAmYqpikpjlSsTLd5h_38p-
        3lz-l502wcs1xveBTYTIT13MAI844IBCZF-xDl-wpJG3kkttA"
      ]
    }
    {
      "kty":"PKIX",
      "x5c":[
        "MIIC-zCCAeOgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQ
        QGEwJVUzERMA8GA1UECBMIQ29sb3JhZG8xDzANBgNVBAcTBkRlbnZlc
        jETMBEGA1UEAxMKRXhhbXBsZSBDQTAeFw0xMzAyMTIyMTI5MDBaFw0x
        NDAyMTIyMTI5MDBaME8xCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhDb2x
        vcmFkbzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDVQQDExNob3N0aW5nLm
        V4YW1wbGUubmV0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDi4
        6kMWnCfg0DTrlcTc6AQUci5Lu1f2RKRWPEhz8qyt_CO0N5VpxKQMlGp
        6TApQzFdAfxCUA3rniYFpMq4Hemw2S74v1LRoWvROKviKRzunDP3EhP
        Xf6GbgnHRlfBx4yvZtcR1BMnkxgJtbTAJu4_wTRXYRE5FKk3xT4IBXT
        IQFwIDAQABo28wbTAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRgaaG6v
        5py2KwjtX-ToLKTEIqeVTALBgNVHQ8EBAMCBeAwEQYJYIZIAYb4QgEB
        BAQDAgZAMB4GCWCGSAGG-EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwDQY
        JKoZIhvcNAQEFBQADggEBAE6Vhvd0OuMHJjyi8F8NoFSCRYOJXOry5B
        lmU6eVwEcUQSAkHaC4Q2isWCIES58Wm5P2VVQTYBUn58H7ZR9-7looj
        YVykwEIQmE_aaVsMM-8AwTMJ7qj7aGhXFlKT2xwiPMVq9JF_Gv43qSy
        V9GJ3Uw5Jz6AN4WawXmlIVD0eKhPoHSDO0wfnFc8KM8mHPu7JXqIriX
        18w4jfj3ySuHIkXeOjdbDWqZWJ7akBVf8McbB05tXP5T7sDTV-t8qH5
        6fdnSQC-qO-sQgmWlKLFtKybT6Fa6J7ChEd_sOJNqB9SoMar5sRYyfS
        foV0D7m_IF1MI6X95rL1YnKIGxDYWBq4ck",
        "MIIDeTCCAmGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBGMQswCQYDVQ
        QGEwJVUzERMA8GA1UECBMIQ29sb3JhZG8xDzANBgNVBAcTBkRlbnZlc
        jETMBEGA1UEAxMKRXhhbXBsZSBDQTAeFw0xMzAyMTIyMTI4MDBaFw0y
        MzAyMTIyMTI4MDBaMEYxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhDb2x
        vcmFkbzEPMA0GA1UEBxMGRGVudmVyMRMwEQYDVQQDEwpFeGFtcGxlIE
        NBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzNQ30X7uX
        Tg-4jKadtRO5uQEMRMnkZvDnptbWAtx0d1PsufQ2kfvog0gDhigjPEZ
        DV9S-zm63Ia-eqJ3ROT9jDXjtF6s_IawITf5cPSNxn8qP8w-vbiy0rB
        4W4Nk1Dwji7KJ_wKNo0mwOx_qWNjSk3yoaU4sUEuIypizgLxKAr25vV
        vAJAxF6HAfdQoVAIdCZ_7qbBPI7aurdU_NdmbbKBK0lp8aV1MYLzz8D
        I0hWcBQa2-gOSUcd_yT1az7UpMjGllbnVlUDxyJeCzbBaHny5NlWWHs
        GnsbucbM-9yeAMbRes_z0KeHxcRtomd8bh7As12RIXKrk5GRoNVKAoi
        wLQIDAQABo3IwcDAPBgNVHRMBAf8EBTADAQH_MB0GA1UdDgQWBBSyie
        t77RfWpH3X8NMwGFVu2ldJPTALBgNVHQ8EBAMCAQYwEQYJYIZIAYb4Q
        gEBBAQDAgAHMB4GCWCGSAGG-EIBDQQRFg94Y2EgY2VydGlmaWNhdGUw
        DQYJKoZIhvcNAQEFBQADggEBAIE-gvYX-2MOAmL3qOraIYUb1eDeUyC
        rxroqrI1xX3jDapMPltCxuZr8VkLljHaNpe7sLJlFWSaQHkZe4snxWL
        SdINLrgFhxskclAlSLutPVTA4xPwo60t0hBJE0NJ8kC8gVvvlWXWAiI
        IVszG3vLBcfxZeuOS4JsVwGbTt5uKsVIJ2VkRiBG4ey5lsS5O8u0vRf
        ei7HFr1NzZ8y5BHoix9VLN2--n11SNicwDOo2V618B8GQnPqM2dsaDa
        A1wIrMZeEyoRtIN25jcW-as4sS9dPJ1ueNIzrSuzlXtKYGjflaTcEfD
        -_kImTw9tHzS57iBXHqgQTQo61pYzAZMlk9wA"
      ]
    }
  ]
}        ]]></artwork>
      </figure>
    </section>
    <section title="Security Considerations" anchor="security">
      <t>This document supplements but does not supersede the security considerations provided in <xref target="RFC2616"/>, <xref target="RFC2818"/>, <xref target="RFC6120"/>, and <xref target="RFC6125"/>.</t>
      <t>Specifically, communication via HTTPS depends on checking the identity of the HTTP server in accordance with <xref target="RFC2818"/>.</t>
    </section>
    <section title="IANA Considerations" anchor="iana">
      <section title="The &quot;posh._xmpp-client._tcp.json&quot; Well-Known URI" anchor="iana-posh-client">
        <t>This specification registers the "posh._xmpp-client._tcp.json" well-known URI in the Well-Known URI Registry as defined by <xref target="RFC5785"/>.</t>
        <t>URI suffix: posh._xmpp-client._tcp.json</t>
        <t>Change controller: IETF</t>
        <t>Specification document(s): [[ this document ]]</t>
      </section>
      <section title="The &quot;posh._xmpp-server._tcp.json&quot; Well-Known URI" anchor="iana-posh-server">
        <t>This specification registers the "posh._xmpp-server._tcp.json" well-known URI in the Well-Known URI Registry as defined by <xref target="RFC5785"/>.</t>
        <t>URI suffix: posh._xmpp-server._tcp.json</t>
        <t>Change controller: IETF</t>
        <t>Specification document(s): [[ this document ]]</t>
      </section>
    </section>
  </middle>
  <back>
    <references title="Normative References">
      <reference anchor="JOSE-JWK">
        <front>
          <title>JSON Web Key (JWK)</title>
          <author initials="M." surname="Jones" fullname="Michael B. Jones">
            <organization>Microsoft</organization>
            <address>
              <email>mbj@microsoft.com</email>
            </address>
          </author>
          <date month="December" year="2012"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-jose-json-web-key-08"/>
        <format type="TXT" target="http://tools.ietf.org/html/draft-ietf-jose-json-web-key-08.txt"/>
      </reference>
      <reference anchor="JOSE-PKIX-KEY">
        <front>
          <title>JSON Web Key (JWK) for PKIX Certificates</title>
          <author initials="M." surname="Miller" fullname="Matthew Miller">
            <organization>Cisco</organization>
            <address>
              <email>mamille2@cisco.com</email>
            </address>
          </author>
          <date month="February" year="2013"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-miller-jose-pkix-key-01"/>
        <format type="TXT" target="http://tools.ietf.org/html/draft-miller-jose-pkix-key-01.txt"/>
      </reference>
      <reference anchor="XMPP-DNA">
        <front>
          <title>Domain Name Associations (DNA) in the Extensible Messaging and Presence Protocol (XMPP)</title>
          <author initials="P." surname="Saint-Andre" fullname="Peter Saint-Andre">
            <organization>Cisco</organization>
            <address>
              <email>psaintan@cisco.com</email>
            </address>
          </author>
          <author initials="M." surname="Miller" fullname="Matthew Miller">
            <organization>Cisco</organization>
            <address>
              <email>mamille2@cisco.com</email>
            </address>
          </author>
          <date month="February" year="2013"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-saintandre-xmpp-dna-01"/>
        <format type="TXT" target="http://tools.ietf.org/html/draft-sainandre-xmpp-dna-01.txt"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title abbrev="RFC Key Words">Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner" fullname="Scott Bradner">
            <organization>Harvard University</organization>
            <address>
              <postal>
                <street>1350 Mass.  Ave.</street>
                <street>Cambridge</street>
                <street>MA 02138</street>
              </postal>
              <phone>- +1 617 495 3864</phone>
              <email>-</email>
            </address>
          </author>
          <date month="March" year="1997"/>
          <area>General</area>
          <keyword>keyword</keyword>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  Authors who follow these guidelines should incorporate this phrase near the beginning of their document: 
              <list><t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.</t></list>
            </t>
            <t>Note that the force of these words is modified by the requirement level of the document in which they are used.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
      </reference>
      <reference anchor="RFC2616">
        <front>
          <title abbrev="HTTP/1.1">Hypertext Transfer Protocol -- HTTP/1.1</title>
          <author initials="R." surname="Fielding" fullname="Roy T. Fielding">
            <organization abbrev="UC Irvine">Department of Information and Computer Science</organization>
            <address>
              <postal>
                <street>University of California, Irvine</street>
                <city>Irvine</city>
                <region>CA</region>
                <code>92697-3425</code>
              </postal>
              <facsimile>+1(949)824-1715</facsimile>
              <email>fielding@ics.uci.edu</email>
            </address>
          </author>
          <author initials="J." surname="Gettys" fullname="James Gettys">
            <organization abbrev="Compaq/W3C">World Wide Web Consortium</organization>
            <address>
              <postal>
                <street>MIT Laboratory for Computer Science, NE43-356</street>
                <street>545 Technology Square</street>
                <city>Cambridge</city>
                <region>MA</region>
                <code>02139</code>
              </postal>
              <facsimile>+1(617)258-8682</facsimile>
              <email>jg@w3.org</email>
            </address>
          </author>
          <author initials="J." surname="Mogul" fullname="Jeffrey C. Mogul">
            <organization abbrev="Compaq">Compaq Computer Corporation</organization>
            <address>
              <postal>
                <street>Western Research Laboratory</street>
                <street>250 University Avenue</street>
                <city>Palo Alto</city>
                <region>CA</region>
                <code>94305</code>
              </postal>
              <email>mogul@wrl.dec.com</email>
            </address>
          </author>
          <author initials="H." surname="Frystyk" fullname="Henrik Frystyk Nielsen">
            <organization abbrev="W3C/MIT">World Wide Web Consortium</organization>
            <address>
              <postal>
                <street>MIT Laboratory for Computer Science, NE43-356</street>
                <street>545 Technology Square</street>
                <city>Cambridge</city>
                <region>MA</region>
                <code>02139</code>
              </postal>
              <facsimile>+1(617)258-8682</facsimile>
              <email>frystyk@w3.org</email>
            </address>
          </author>
          <author initials="L." surname="Masinter" fullname="Larry Masinter">
            <organization abbrev="Xerox">Xerox Corporation</organization>
            <address>
              <postal>
                <street>MIT Laboratory for Computer Science, NE43-356</street>
                <street>3333 Coyote Hill Road</street>
                <city>Palo Alto</city>
                <region>CA</region>
                <code>94034</code>
              </postal>
              <email>masinter@parc.xerox.com</email>
            </address>
          </author>
          <author initials="P." surname="Leach" fullname="Paul J. Leach">
            <organization abbrev="Microsoft">Microsoft Corporation</organization>
            <address>
              <postal>
                <street>1 Microsoft Way</street>
                <city>Redmond</city>
                <region>WA</region>
                <code>98052</code>
              </postal>
              <email>paulle@microsoft.com</email>
            </address>
          </author>
          <author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee">
            <organization abbrev="W3C/MIT">World Wide Web Consortium</organization>
            <address>
              <postal>
                <street>MIT Laboratory for Computer Science, NE43-356</street>
                <street>545 Technology Square</street>
                <city>Cambridge</city>
                <region>MA</region>
                <code>02139</code>
              </postal>
              <facsimile>+1(617)258-8682</facsimile>
              <email>timbl@w3.org</email>
            </address>
          </author>
          <date year="1999" month="June"/>
          <abstract>
            <t>
   The Hypertext Transfer Protocol (HTTP) is an application-level
   protocol for distributed, collaborative, hypermedia information
   systems. It is a generic, stateless, protocol which can be used for
   many tasks beyond its use for hypertext, such as name servers and
   distributed object management systems, through extension of its
   request methods, error codes and headers . A feature of HTTP is
   the typing and negotiation of data representation, allowing systems
   to be built independently of the data being transferred.
</t>
            <t>
   HTTP has been in use by the World-Wide Web global information
   initiative since 1990. This specification defines the protocol
   referred to as "HTTP/1.1", and is an update to RFC 2068 .
</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="2616"/>
        <format type="TXT" octets="422317" target="http://www.rfc-editor.org/rfc/rfc2616.txt"/>
        <format type="PS" octets="5529857" target="http://www.rfc-editor.org/rfc/rfc2616.ps"/>
        <format type="PDF" octets="550558" target="http://www.rfc-editor.org/rfc/rfc2616.pdf"/>
        <format type="HTML" octets="636125" target="http://xml.resource.org/public/rfc/html/rfc2616.html"/>
        <format type="XML" octets="493420" target="http://xml.resource.org/public/rfc/xml/rfc2616.xml"/>
      </reference>
      <reference anchor="RFC2818">
        <front>
          <title>HTTP Over TLS</title>
          <author initials="E." surname="Rescorla" fullname="E. Rescorla">
            <organization/>
          </author>
          <date year="2000" month="May"/>
          <abstract>
            <t>This memo describes how to use Transport Layer Security (TLS) to secure Hypertext Transfer Protocol (HTTP) connections over the Internet.  This memo provides information for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="2818"/>
        <format type="TXT" octets="15170" target="http://www.rfc-editor.org/rfc/rfc2818.txt"/>
      </reference>
      <reference anchor="RFC5280">
        <front>
          <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
          <author initials="D." surname="Cooper" fullname="D. Cooper">
            <organization/>
          </author>
          <author initials="S." surname="Santesson" fullname="S. Santesson">
            <organization/>
          </author>
          <author initials="S." surname="Farrell" fullname="S. Farrell">
            <organization/>
          </author>
          <author initials="S." surname="Boeyen" fullname="S. Boeyen">
            <organization/>
          </author>
          <author initials="R." surname="Housley" fullname="R. Housley">
            <organization/>
          </author>
          <author initials="W." surname="Polk" fullname="W. Polk">
            <organization/>
          </author>
          <date year="2008" month="May"/>
          <abstract>
            <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices. [STANDARDS TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5280"/>
        <format type="TXT" octets="352580" target="ftp://ftp.isi.edu/in-notes/rfc5280.txt"/>
      </reference>
      <reference anchor="RFC5785">
        <front>
          <title>Defining Well-Known Uniform Resource Identifiers (URIs)</title>
          <author initials="M." surname="Nottingham" fullname="M. Nottingham">
            <organization/>
          </author>
          <author initials="E." surname="Hammer-Lahav" fullname="E. Hammer-Lahav">
            <organization/>
          </author>
          <date year="2010" month="April"/>
          <abstract>
            <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5785"/>
        <format type="TXT" octets="13779" target="http://www.rfc-editor.org/rfc/rfc5785.txt"/>
      </reference>
      <reference anchor="RFC6120">
        <front>
          <title>Extensible Messaging and Presence Protocol (XMPP): Core</title>
          <author initials="P." surname="Saint-Andre" fullname="Peter Saint-Andre">
            <organization>Cisco</organization>
            <address>
              <email>psaintan@cisco.com</email>
            </address>
          </author>
          <date month="March" year="2011"/>
        </front>
        <seriesInfo name="RFC" value="6120"/>
        <format type="TXT" target="http://tools.ietf.org/rfc/rfc6120.txt"/>
      </reference>
      <reference anchor="RFC6125">
        <front>
          <title>Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)</title>
          <author initials="P." surname="Saint-Andre" fullname="Peter Saint-Andre">
            <organization>Cisco</organization>
            <address>
              <email>psaintan@cisco.com</email>
            </address>
          </author>
          <author initials="J." surname="Hodges" fullname="Jeff Hodges">
            <organization>PayPal</organization>
            <address>
              <email>jeff.hodges@paypal.com</email>
            </address>
          </author>
          <date month="March" year="2011"/>
        </front>
        <seriesInfo name="RFC" value="6125"/>
        <format type="TXT" target="http://tools.ietf.org/rfc/rfc6125.txt"/>
      </reference>
    </references>
    <references title="Informative References">
      <reference anchor="HTTP-STATUS-308">
        <front>
          <title>The Hypertext Transfer Protocol (HTTP) Status Code 308 (Permanent Redirect)</title>
          <author initials="J." surname="Reschke" fullname="Julian F. Reschke">
            <organization>greenbytes GmbH</organization>
            <address>
              <email>julian.reschke@greenbytes.de</email>
            </address>
          </author>
          <date month="March" year="2012"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-reschke-http-status-308-07"/>
        <format type="TXT" target="http://tools.ietf.org/html/draft-reschke-http-status-308-07.txt"/>
      </reference>
      <reference anchor="RFC4033">
        <front>
          <title>DNS Security Introduction and Requirements</title>
          <author initials="R." surname="Arends" fullname="Roy Arends">
            <organization>Telematica Instituut</organization>
            <address>
              <email>roy.arends@telin.nl</email>
            </address>
          </author>
          <author initials="R." surname="Austein" fullname="Rob Austein">
            <organization>Internet Systems Consortium</organization>
            <address>
              <email>sra@isc.org</email>
            </address>
          </author>
          <author initials="M." surname="Larson" fullname="Matt Larson">
            <organization>VeriSign, Inc.</organization>
            <address>
              <email>mlarson@verisign.com</email>
            </address>
          </author>
          <author initials="D." surname="Massey" fullname="Dan Massey">
            <organization>Colorado State University</organization>
            <address>
              <email>massey@cs.colostate.edu</email>
            </address>
          </author>
          <author initials="S." surname="Rose" fullname="Scott Rose">
            <organization>National Institute for Standards and Technology</organization>
            <address>
              <email>scott.rose@nist.gov</email>
            </address>
          </author>
          <date month="May" year="2005"/>
        </front>
        <seriesInfo name="RFC" value="4033"/>
        <format type="TXT" target="http://tools.ietf.org/rfc/rfc4033.txt"/>
      </reference>
      <reference anchor='RFC6698'>
        <front>
          <title>The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA</title>
          <author initials='P.' surname='Hoffman' fullname='P. Hoffman'>
            <organization />
          </author>
          <author initials='J.' surname='Schlyter' fullname='J. Schlyter'>
            <organization />
          </author>
          <date year='2012' month='August' />
          <abstract>
            <t>Encrypted communication on the Internet often uses Transport Layer Security (TLS), which depends on third parties to certify the keys used.  This document improves on that situation by enabling the administrators of domain names to specify the keys used in that domain's TLS servers.  This requires matching improvements in TLS client software, but no change in TLS server software. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name='RFC' value='6698' />
        <format type='TXT' octets='84034' target='http://www.rfc-editor.org/rfc/rfc6698.txt' />
      </reference>
    </references>
    <references title="Informative References">
<reference anchor='RFC6555'>
<front>
<title>Happy Eyeballs: Success with Dual-Stack Hosts</title>
<author initials='D.' surname='Wing' fullname='D. Wing'>
<organization /></author>
<author initials='A.' surname='Yourtchenko' fullname='A. Yourtchenko'>
<organization /></author>
<date year='2012' month='April' />
<abstract>
<t>When a server's IPv4 path and protocol are working, but the server's IPv6 path and protocol are not working, a dual-stack client application experiences significant connection delay compared to an IPv4-only client.  This is undesirable because it causes the dual- stack client to have a worse user experience.  This document specifies requirements for algorithms that reduce this user-visible delay and provides an algorithm. [STANDARDS-TRACK]</t></abstract></front>
<seriesInfo name='RFC' value='6555' />
<format type='TXT' octets='34048' target='http://www.rfc-editor.org/rfc/rfc6555.txt' />
</reference>
    </references>
  </back>
</rfc>
