RFC 10003 PROPOSED STANDARD PKI · CERTIFICATES · TRANSPORT

Certificate Management over CMS (CMC): Transport Protocols

How certificate requests and responses travel between clients and a certificate authority: over HTTP, as files, by mail, or over raw TCP.

On rfc-editor.org ↗
PUBLISHED
July 2026
AUTHORS
J. Mandel, S. Turner
STREAM
IETF
BUILDS ON
RFC 5273 — CMC Transport, RFC 6402 — CMC updates
TCP PORT
5318
SERVICE NAME
pkix-cmc
TRANSPORTS
HTTP, file, mail, TCP
HTTP METHOD
POST
MINIMUM TLS
TLS 1.2 or later
DOI
10.17487/RFC10003
ERRATA
Reported errata

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                    J. Mandel, Ed.
Request for Comments: 10003                                 AKAYLA, Inc.
Obsoletes: 5273, 6402                                     S. Turner, Ed.
Category: Standards Track                                          sn3rd
ISSN: 2070-1721                                                July 2026


       Certificate Management over CMS (CMC): Transport Protocols

Abstract

   This document defines a number of transport mechanisms that are used
   to move Certificate Management over CMS (CMC) messages.  The
   transport mechanisms described in this document are HTTP, file, mail,
   and TCP.

   This document obsoletes RFCs 5273 and 6402.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   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/rfc10003.

Copyright Notice

   Copyright (c) 2026 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Revised BSD License text as described in Section 4.e of the
   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
   Contributions published or made publicly available before November
   10, 2008.  The person(s) controlling the copyright in some of this
   material may not have granted the IETF Trust the right to allow
   modifications of such material outside the IETF Standards Process.
   Without obtaining an adequate license from the person(s) controlling
   the copyright in such materials, this document may not be modified
   outside the IETF Standards Process, and derivative works of it may
   not be created outside the IETF Standards Process, except to format
   it for publication as an RFC or to translate it into languages other
   than English.

Table of Contents

   1.  Introduction
   2.  Requirements Terminology
   3.  Changes Since RFCs 5273 and 6402
   4.  File-Based Protocol
   5.  Mail-Based Protocol
   6.  HTTP-Based Protocol
     6.1.  PKI Request
     6.2.  PKI Response
   7.  TCP-Based Protocol
   8.  IANA Considerations
   9.  Security Considerations
   10. References
     10.1.  Normative References
     10.2.  Informative References
   Acknowledgements
   Contributors
   Authors' Addresses

1.  Introduction

   This document defines a number of transport methods that are used to
   move CMC messages (defined in [CMC-STRUCT]).  The transport
   mechanisms described in this document are HTTP, file, mail, and TCP.

   This document obsoletes RFCs 5273 [CMC-TRANSv1] and 6402
   [CMC-Updates].  This document also incorporates [Err3593].

2.  Requirements Terminology

   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
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

3.  Changes Since RFCs 5273 and 6402

   Merged [CMC-Updates] text.

   IANA assigned TCP port 5318 for the use of CMC.

   Clarified the file extensions for Full Public Key Infrastructure
   (PKI) Requests and Responses.

   Added examples of encoding types for mail-based Requests and
   Responses.

   Replaced TLS 1.0 with TLS 1.2 or later and added that implementations
   are required to follow the recommendations in [BCP195].

   Addressed [Err3593].

   Added a reference to [HTTP-IMP] for HTTP guidance.

   Restricted early data (0-RTT) if using TLS 1.3 or QUIC.

   Restricted the use of TCP-Pipelining.

   Clarified the limitations of SMTP-over-TLS and the use of
   authenticated TLS for message delivery.

4.  File-Based Protocol

   Enrollment messages and responses may be transferred between clients
   and servers using file-system-based mechanisms, such as when
   enrollment is performed for an offline client.  When files are used
   to transport Full PKI Request or Full PKI Response messages, there
   MUST be only one instance of a request or response message in a
   single file, and the file MUST be binary encoded.  The abbreviations
   crq and crp stand for Full PKI Request/Response, respectively; for
   clarity, we define file extensions for them.  The following file type
   extensions SHOULD be used:

                 +=====================+================+
                 | Message Type        | File Extension |
                 +=====================+================+
                 | Simple PKI Request  | .p10           |
                 +---------------------+----------------+
                 | Full PKI Request    | .crq           |
                 +---------------------+----------------+
                 | Simple PKI Response | .p7c           |
                 +---------------------+----------------+
                 | Full PKI Response   | .crp           |
                 +---------------------+----------------+

                    Table 1: File PKI Request/Response
                              Identification

5.  Mail-Based Protocol

   MIME wrapping is defined for those environments that support MIME.
   The basic mime wrapping in this section is taken from [SMIMEV4].
   When using a mail-based protocol, MIME wrapping between the layers of
   Cryptographic Message Syntax (CMS) wrapping is optional.  Note that
   this is different from the standard S/MIME (Secure MIME) message.

   What follows is a set of Simple PKI Request and Response messages and
   a set of Full PKI Request and Response messages.  The headers
   discussed below appear in the top-level content of the messages, and
   the messages' contents are the entire messages' bodies.

      |  WARNING: The examples that follow are purposely truncated for
      |  brevity.

   Simple enrollment requests are encoded using the "application/pkcs10"
   content type [RFC5967].  A file name MUST be included either in a
   Content-Type or a Content-Disposition header in the name or filename
   parameter, respectively.  The extension for the file MUST be ".p10".
   An example similar to that from [RFC5967] follows:

     From: cmc-client@example.com
     Message-Id: <E06C3FA6-FF15-4851-AC7F-DB9F3B1C2C7A@example.com>
     To: cmc-server@example.com
     Subject: Simple Enrollment Request
     Date: Tue, 3 Feb 2026 16:08:28 -0500
     MIME-Version: 1.0
     Content-Type: application/pkcs10; name=smime.p10
     Content-Transfer-Encoding: base64
     Content-Disposition: inline; filename=smime.p10

     < message contents >

                Figure 1: Simple PKI Request Message Example

   Simple PKI Response messages MUST be encoded as content type
   "application/pkcs7-mime".  A smime-type parameter MUST be on the
   Content-Type header with a value of "certs-only".  A file name with
   the ".p7c" extension MUST be specified as part of the Content-Type or
   Content-Disposition header in the name or filename parameter,
   respectively.  An example similar to that from [SMIMEV4] follows:

     From: cmc-server@example.com
     Message-Id: <E06C3FA6-FF15-4851-AC7F-DB9F3B1C2C7B@example.com>
     To: cmc-client@example.com
     Subject: Re: Simple Enrollment Request
     Date: Tue, 3 Feb 2026 16:09:28 -0500
     MIME-Version: 1.0
     References: <E06C3FA6-FF15-4851-AC7F-DB9F3B1C2C7A@example.com>
     In-Reply-To: <E06C3FA6-FF15-4851-AC7F-DB9F3B1C2C7A@example.com>
     Content-Type: application/pkcs7-mime; smime-type=certs-only;
       name=smime.p7c
     Content-Transfer-Encoding: base64
     Content-Disposition: inline; filename=smime.p7c

     < message contents >

               Figure 2: Simple PKI Response Message Example

   Full PKI Request messages MUST be encoded as content type
   "application/pkcs7-mime".  The smime-type parameter MUST be included
   with a value of "CMC-Request".  A file name with the ".p7m" extension
   MUST be specified as part of the Content-Type or Content-Disposition
   header in the name or filename parameter, respectively.  An example
   similar to that from [SMIMEV4] follows:

     From: cmc-client@example.com
     Message-Id: <E06C3FA6-FF15-4851-AC7F-DB9F3B1C2C7C@example.com>
     To: cmc-server@example.com
     Subject: Full Enrollment Request
     Date: Tue, 3 Feb 2026 16:10:28 -0500
     MIME-Version: 1.0
     Content-Type: application/pkcs7-mime; smime-type=CMC-Request;
       name=smime.p7c
     Content-Transfer-Encoding: base64
     Content-Disposition: inline; filename=smime.p7m

     < message contents >

                 Figure 3: Full PKI Request Message Example

   Full PKI Response messages MUST be encoded as content type
   "application/pkcs7-mime".  The smime-type parameter MUST be included
   with a value of "CMC-Response".  A file name with the ".p7m"
   extension MUST be specified as part of the Content-Type or Content-
   Disposition statement.  An example similar to that from [SMIMEV4]
   follows:

     From: cmc-server@example.com
     Message-Id: <E06C3FA6-FF15-4851-AC7F-DB9F3B1C2C7D@example.com>
     To: cmc-client@example.com
     Subject: Re: Full Enrollment Request
     Date: Tue, 3 Feb 2026 16:11:28 -0500
     MIME-Version: 1.0
     References: <E06C3FA6-FF15-4851-AC7F-DB9F3B1C2C7C@example.com>
     In-Reply-To: <E06C3FA6-FF15-4851-AC7F-DB9F3B1C2C7C@example.com>
     Content-Type: application/pkcs7-mime; smime-type=CMC-Response;
       name=smime.p7m
     Content-Transfer-Encoding: base64
     Content-Disposition: inline; filename=smime.p7m

     < message contents >

                Figure 4: Full PKI Response Message Example

   For file names present in the name or filename parameters, non-ASCII
   text is prohibited.

   +====================+==============+================+==============+
   | Item               | MIME Type    | File Extension | SMIME Type   |
   +====================+==============+================+==============+
   | Simple PKI         | application/ | .p10           | N/A          |
   | Request            | pkcs10       |                |              |
   +--------------------+--------------+----------------+--------------+
   | Full PKI           | application/ | .p7m           | CMC-Request  |
   | Request            | pkcs7-mime   |                |              |
   +--------------------+--------------+----------------+--------------+
   | Simple PKI         | application/ | .p7c           | certs-only   |
   | Response           | pkcs7-mime   |                |              |
   +--------------------+--------------+----------------+--------------+
   | Full PKI           | application/ | .p7m           | CMC-Response |
   | Response           | pkcs7-mime   |                |              |
   +--------------------+--------------+----------------+--------------+

             Table 2: MIME PKI Request/Response Identification

6.  HTTP-Based Protocol

   This section describes the conventions for use of HTTP [HTTP] as a
   data transfer protocol.  Consult [HTTP-IMP] for additional
   information.  The use of HTTPS [HTTP] provides any necessary content
   protection from eavesdroppers.

   In order for CMC clients and servers using HTTP to interoperate, the
   following rules apply:

   *  Clients are configured with sufficient information to form the
      server URI [RFC3986].

   *  Client requests are submitted by use of the POST method.

   *  Servers MUST use the 2XX response codes for successful responses.

   *  Clients MAY attempt to send certification requests using HTTPS
      [HTTP].  Although servers are not required to support TLS/QUIC, a
      secure channel might be available regardless depending on the HTTP
      version implemented [HTTP_1.0], [HTTP_1.1], [HTTP_2], [HTTP_3], or
      later.  If TLS is used by the HTTP version, then the
      implementation MUST follow the recommendations in [BCP195].  CMC
      implementations that support TLS 1.3 or QUIC MUST NOT use early
      data (i.e., 0-RTT) because POST is not idempotent.

   *  Clients are not required to support any type of HTTP
      authentication (see Section 11 of [HTTP]) nor Cookies [COOKIES].
      Thus, servers cannot rely on these features to be available.

   *  Clients and servers are expected to follow other rules and
      restrictions in [HTTP].  Note that some of those rules are for
      HTTP methods other than POST; clearly, only the rules that apply
      to POST are relevant for this specification.

6.1.  PKI Request

   A PKI Request using the POST method is constructed as follows.

   The Content-Type field MUST have the appropriate value from Table 2.

   A Content-Type field for a request:

      Content-Type: application/pkcs7-mime; smime-type=CMC-Request;
      name=request.p7m

   The content of the message is the binary value of the encoding of the
   PKI Request.

6.2.  PKI Response

   The content of an HTTP-based PKI Response is the binary value of the
   BER (Basic Encoding Rules) encoding [X690] of either a Simple or Full
   PKI Response.

   The Content-Type field MUST have the appropriate value from Table 2.

   A Content-Type field for a response:

      Content-Type: application/pkcs7-mime; smime-type=CMC-Response;
      name=response.p7m

7.  TCP-Based Protocol

   When CMC messages are sent over a TCP-based connection, no wrapping
   is required of the message.  Messages are sent in their binary
   encoded form.

   The client closes a connection after receiving a response, or it
   issues another request to the server using the same connection.
   Reusing one connection for multiple successive requests, instead of
   opening multiple connections that are only used for a single request,
   is RECOMMENDED for performance and resource conservation reasons.
   The client MUST wait for the full response before making another
   request on the same connection.  A server MAY close a connection
   after it has been idle for some period of time; this timeout would
   typically be several minutes long.

   CMC requires a registered port number to send and receive CMC
   messages over TCP.  The Service Name is "pkix-cmc".  The TCP port
   number is 5318.

   Prior to [CMC-Updates], CMC did not have a registered port number and
   used an externally configured port from the Private Port range.
   Client implementations MAY continue to use a port chosen from the
   Private Port range.  A TCP Server SHOULD use the port assigned to the
   CMC service: 5318.  It is expected that HTTP will continue to be the
   primary transport method used by CMC installations.

8.  IANA Considerations

   IANA has assigned a TCP port number in the "Dynamic and/or Private
   Ports Range" of the "Service Name and Transport Protocol Port Number
   Registry" for the use of CMC.

   Service Name:  pkix-cmc

   Port Number:  5318

   Transport Protocol:  tcp

   Description:  PKIX Certificate Management using CMS (CMC)

   Assignee:  iesg@ietf.org

   Contact:  chair@ietf.org

   Reference:  RFC 10003

   IANA has updated the references to [CMC-TRANSv1] in the "Parameter
   Values for the smime-type Parameter" registry in the "Media Type Sub-
   Parameter Registries" registry group for CMC-Request and CMC-Response
   to instead point to this document.

9.  Security Considerations

   Mechanisms for thwarting replay attacks may be required in particular
   implementations of this protocol depending on the operational
   environment.  In cases where the Certification Authority (CA)
   maintains significant state information, replay attacks may be
   detectable without the inclusion of the (optional) CMC nonce
   mechanisms.  Implementers and designers of this protocol need to
   carefully consider environmental conditions before choosing whether
   or not to implement or use the senderNonce and recipientNonce
   attributes described in Section 6.6 of [CMC-STRUCT].  Developers of
   state-constrained PKI clients are strongly encouraged to incorporate
   the use of these attributes.

   Initiation of a secure communications channel between an End-Entity
   (EE) and a CA or Registration Authority (RA) -- and, similarly,
   between an RA and another RA or CA -- necessarily requires an out-of-
   band trust initiation mechanism.  For example, a secure channel may
   be constructed between the EE and the CA via IPsec [IPsec] or TLS
   [TLS].  Many such schemes exist, and the choice of any particular
   scheme for trust initiation is outside the scope of this document.
   Implementers of this protocol are strongly encouraged to consider
   generally accepted principles of secure key management when
   integrating this capability within an overall security architecture.

   In some instances, no out-of-band trust will have been initiated
   prior to use of this protocol.  This can occur when the protocol
   itself is being used to download onto the system the set of trust
   anchors to be used for these protocols.  In these instances, the
   EnvelopedData content type (Section 3.2.1.3.3 of [CMC-STRUCT]) or
   AuthEnvelopedData content type Section 3.2.1.3.5 of [CMC-STRUCT]
   provides the same shrouding that TLS would have provided.

   For the mail-based protocol, the EnvelopedData or AuthEnvelopedData
   content types can also be used to apply confidentiality protection
   (content shrouding) to the conveyed messages.  Note that, even if the
   application uses SMTP-over-TLS [RFC3207] with its preferred Message
   Submission Agent (MSA) for initial submission of the message for
   delivery, SMTP in subsequent relay hops may not be either
   authenticated or encrypted.  For some combinations of initial MSA and
   destination domains, it may be possible to request use of
   authenticated TLS at every relay "hop" of message delivery via the
   mechanism specified in [RFC8689].  This MAY be used, when supported,
   and expected to work, but risks non-delivery if some of the SMTP
   servers along the relay chain do not support the REQUIRETLS ESMTP
   extension.

   For the file-based protocol, an additional method of applying
   confidentiality protection (content shrouding) to the conveyed
   messages is usually available in the form of filesystem permissions.
   The local system may allow for read access to be limited to just a
   single user or group that corresponds to the entity authorized to
   read the request or response, respectively, and diligent use of these
   filesystem permissions can be a useful mechanism in multi-user
   environments.

10.  References

10.1.  Normative References

   [BCP195]   Best Current Practice 195,
              <https://www.rfc-editor.org/info/bcp195>.
              At the time of writing, this BCP comprises the following:

              Moriarty, K. and S. Farrell, "Deprecating TLS 1.0 and TLS
              1.1", BCP 195, RFC 8996, DOI 10.17487/RFC8996, March 2021,
              <https://www.rfc-editor.org/info/rfc8996>.

              Sheffer, Y., Saint-Andre, P., and T. Fossati,
              "Recommendations for Secure Use of Transport Layer
              Security (TLS) and Datagram Transport Layer Security
              (DTLS)", BCP 195, RFC 9325, DOI 10.17487/RFC9325, November
              2022, <https://www.rfc-editor.org/info/rfc9325>.

   [CMC-STRUCT]
              Mandel, J., Ed. and S. Turner, Ed., "Certificate
              Management over CMS (CMC)", RFC 10002,
              DOI 10.17487/RFC10002, July 2026,
              <https://www.rfc-editor.org/info/rfc10002>.

   [HTTP]     Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
              Ed., "HTTP Semantics", STD 97, RFC 9110,
              DOI 10.17487/RFC9110, June 2022,
              <https://www.rfc-editor.org/info/rfc9110>.

   [HTTP-IMP] Nottingham, M., "Building Protocols with HTTP", BCP 56,
              RFC 9205, DOI 10.17487/RFC9205, June 2022,
              <https://www.rfc-editor.org/info/rfc9205>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3986]  Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
              Resource Identifier (URI): Generic Syntax", STD 66,
              RFC 3986, DOI 10.17487/RFC3986, January 2005,
              <https://www.rfc-editor.org/info/rfc3986>.

   [RFC5967]  Turner, S., "The application/pkcs10 Media Type", RFC 5967,
              DOI 10.17487/RFC5967, August 2010,
              <https://www.rfc-editor.org/info/rfc5967>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [SMIMEV4]  Schaad, J., Ramsdell, B., and S. Turner, "Secure/
              Multipurpose Internet Mail Extensions (S/MIME) Version 4.0
              Message Specification", RFC 8551, DOI 10.17487/RFC8551,
              April 2019, <https://www.rfc-editor.org/info/rfc8551>.

   [X690]     ITU-T, "Information technology - ASN.1 encoding rules:
              Specification of Basic Encoding Rules (BER), Canonical
              Encoding Rules (CER) and Distinguished Encoding Rules
              (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1:2021,
              February 2021, <https://www.itu.int/rec/T-REC-X.690>.

10.2.  Informative References

   [CMC-TRANSv1]
              Schaad, J. and M. Myers, "Certificate Management over CMS
              (CMC): Transport Protocols", RFC 5273,
              DOI 10.17487/RFC5273, June 2008,
              <https://www.rfc-editor.org/info/rfc5273>.

   [CMC-Updates]
              Schaad, J., "Certificate Management over CMS (CMC)
              Updates", RFC 6402, DOI 10.17487/RFC6402, November 2011,
              <https://www.rfc-editor.org/info/rfc6402>.

   [COOKIES]  Barth, A., "HTTP State Management Mechanism", RFC 6265,
              DOI 10.17487/RFC6265, April 2011,
              <https://www.rfc-editor.org/info/rfc6265>.

   [Err3593]  RFC Errata, Erratum ID 3593, RFC 5273,
              <https://www.rfc-editor.org/errata/eid3593>.

   [HTTP_1.0] Berners-Lee, T., Fielding, R., and H. Frystyk, "Hypertext
              Transfer Protocol -- HTTP/1.0", RFC 1945,
              DOI 10.17487/RFC1945, May 1996,
              <https://www.rfc-editor.org/info/rfc1945>.

   [HTTP_1.1] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
              Ed., "HTTP/1.1", STD 99, RFC 9112, DOI 10.17487/RFC9112,
              June 2022, <https://www.rfc-editor.org/info/rfc9112>.

   [HTTP_2]   Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113,
              DOI 10.17487/RFC9113, June 2022,
              <https://www.rfc-editor.org/info/rfc9113>.

   [HTTP_3]   Bishop, M., Ed., "HTTP/3", RFC 9114, DOI 10.17487/RFC9114,
              June 2022, <https://www.rfc-editor.org/info/rfc9114>.

   [IPsec]    Kent, S. and K. Seo, "Security Architecture for the
              Internet Protocol", RFC 4301, DOI 10.17487/RFC4301,
              December 2005, <https://www.rfc-editor.org/info/rfc4301>.

   [RFC3207]  Hoffman, P., "SMTP Service Extension for Secure SMTP over
              Transport Layer Security", RFC 3207, DOI 10.17487/RFC3207,
              February 2002, <https://www.rfc-editor.org/info/rfc3207>.

   [RFC8689]  Fenton, J., "SMTP Require TLS Option", RFC 8689,
              DOI 10.17487/RFC8689, November 2019,
              <https://www.rfc-editor.org/info/rfc8689>.

   [TLS]      Rescorla, E., "The Transport Layer Security (TLS) Protocol
              Version 1.3", RFC 9846, DOI 10.17487/RFC9846, July 2026,
              <https://www.rfc-editor.org/info/rfc9846>.

Acknowledgements

   Obviously, the authors would like to thank Jim Schaad and Michael
   Myers for their work on RFC 5273.

   Thank you to Julian Reschke, Benjamin Kaduk, Vidhi Goel, Thomas
   Fossati, Gorry Fairhurst, Éric Vyncke, Gunter Van de Velde, Mahesh
   Jethanandani, Mike Bishop, Mohamed Boucadair, Viktor Dukhovni, and
   Eliot Lear for reviewing the document and providing comments.

   The Acknowledgements section from RFC 5273 of this document follows:

   |  The authors and the PKIX Working Group are grateful for the
   |  participation of Xiaoyi Liu and Jeff Weinstein in helping to
   |  author the original versions of this document.
   |
   |  The authors would like to thank Brian LaMacchia for his work in
   |  developing and writing up many of the concepts presented in this
   |  document.  The authors would also like to thank Alex Deacon and
   |  Barb Fox for their contributions.

Contributors

   Jim Schaad
   August Cellars


   Michael Myers
   TraceRoute Security, Inc.


Authors' Addresses

   Joseph Mandel (editor)
   AKAYLA, Inc.
   Email: joe@akayla.com


   Sean Turner (editor)
   sn3rd
   Email: sean@sn3rd.com

AI ELI5

On this page
PROBLEMCertificate Management over CMS (CMC) defines the messages used to request and issue certificates, but those messages still need an agreed way to be carried between a client and a server.
MECHANISMThis document defines four transports: file-based, mail-based (MIME), HTTP using POST, and plain TCP on port 5318. Each one fixes the content types, file extensions or framing to use.
STATUS TODAYIt is a Proposed Standard that replaces RFC 5273 and RFC 6402, folds in the TCP port assignment and tightens the TLS and HTTP rules. HTTP is expected to remain the main transport.

§1What This Document Covers

CMC messages are defined in a separate document, RFC 10002 (the CMC specification). This RFC only says how to move those messages around. The transport mechanisms it describes are HTTP, file, mail and TCP.

It obsoletes RFC 5273 and RFC 6402, and it also incorporates an erratum (number 3593) against RFC 5273. The usual RFC 2119 and RFC 8174 meaning of MUST and SHOULD applies when the words appear in capitals.

CMC distinguishes Simple PKI messages (a plain PKCS #10 request, and a response that only carries certificates) from Full PKI messages. Most of the transport rules differ depending on which of the two is being carried.

Think of a letter and the different ways to deliver it. The letter's contents are described elsewhere. This document only explains the delivery routes.

§3What Changed From RFC 5273 and RFC 6402

This is a merge-and-tighten revision. The text of RFC 6402 was merged in, and IANA assigned TCP port 5318 for CMC. The file extensions for Full PKI Requests and Responses were clarified, and examples of encoding types for mail-based requests and responses were added.

  • TLS 1.0 was replaced by TLS 1.2 or later, and implementations are required to follow the recommendations in BCP 195.
  • HTTP guidance now points to RFC 9205.
  • Early data (0-RTT) is restricted when TLS 1.3 or QUIC is used.
  • The use of TCP pipelining is restricted.
  • The limits of SMTP-over-TLS and the use of authenticated TLS for message delivery were clarified.

It is a cleaned-up second edition. Old, weak security settings were dropped, a fixed phone number (port) was added for the direct connection, and a few confusing parts were spelled out.

§4The File-Based Protocol

Files suit cases such as enrolling an offline client. When a file carries a Full PKI Request or Response, it MUST hold exactly one message and the file MUST be binary encoded.

The document says the following file extensions SHOULD be used. The abbreviations crq and crp stand for Full PKI Request and Response.

  • Simple PKI Request: .p10
  • Full PKI Request: .crq
  • Simple PKI Response: .p7c
  • Full PKI Response: .crp

Put one form in one folder-file, and give the file a name ending that tells people what kind of form it is.

FILE EXTENSIONS FOR THE FILE-BASED PROTOCOL (RFC 10003)
Message typeFile extension
Simple PKI Request.p10
Full PKI Request.crq
Simple PKI Response.p7c
Full PKI Response.crp

§5The Mail-Based Protocol

Mail uses MIME wrapping, taken from the S/MIME specification (RFC 8551). Unlike standard S/MIME, MIME wrapping between the layers of Cryptographic Message Syntax (CMS) wrapping is optional here.

Each message type has its own content type:

  • A Simple PKI Request uses application/pkcs10 (RFC 5967), and the file name extension MUST be .p10.
  • A Simple PKI Response uses application/pkcs7-mime with smime-type=certs-only and a .p7c file name.
  • A Full PKI Request uses application/pkcs7-mime with smime-type=CMC-Request and a .p7m file name.
  • A Full PKI Response uses application/pkcs7-mime with smime-type=CMC-Response and a .p7m file name.

The file name MUST appear in the name parameter of Content-Type or the filename parameter of Content-Disposition. Non-ASCII text is prohibited in these names. The RFC's example messages are deliberately truncated.

For email, you stick a label on the envelope saying what is inside (request or answer, simple or full) and give the attachment a matching file name.

MIME IDENTIFICATION OF CMC MESSAGES (RFC 10003)
ItemMIME typeFile extensionS/MIME type
Simple PKI Requestapplication/pkcs10.p10N/A
Full PKI Requestapplication/pkcs7-mime.p7mCMC-Request
Simple PKI Responseapplication/pkcs7-mime.p7ccerts-only
Full PKI Responseapplication/pkcs7-mime.p7mCMC-Response

§6The HTTP-Based Protocol

This is the transport the RFC expects to be used most. Clients are configured with enough information to form the server URI, and they submit requests with the POST method. Servers MUST use 2XX response codes for successful responses.

Clients MAY try HTTPS. If TLS is used by the HTTP version in play, the implementation MUST follow BCP 195. CMC implementations that support TLS 1.3 or QUIC MUST NOT use early data (0-RTT), because POST is not idempotent. Clients are not required to support HTTP authentication or cookies, so servers cannot rely on them.

For a request, the Content-Type MUST have the value from the MIME table, for example application/pkcs7-mime; smime-type=CMC-Request; name=request.p7m, and the body is the binary encoding of the PKI Request. A response body is the binary BER encoding of a Simple or Full PKI Response, with smime-type=CMC-Response and name=response.p7m in the example given.

It works like submitting a web form: the client sends the paperwork in a POST, and the server answers with a success code and the reply paperwork.

§7The TCP-Based Protocol and Its Port

Over TCP no wrapping is needed. Messages are sent in their binary encoded form. After a response, the client either closes the connection or sends another request on the same connection. Reusing one connection for several successive requests is RECOMMENDED, but the client MUST wait for the full response before sending the next request. A server MAY close an idle connection, typically after several minutes.

The service name is pkix-cmc and the TCP port is 5318, which IANA has assigned for CMC. Before RFC 6402, CMC had no registered port and used a port from the Private Port range. Clients MAY keep doing that, while a TCP server SHOULD use 5318. IANA also updated the smime-type registry entries for CMC-Request and CMC-Response to point to this document.

The document says it is expected that HTTP will continue to be the primary transport method used by CMC installations.

The direct connection has its own numbered door, 5318. Send one request, wait for the whole answer, and then you can send the next one through the same door.

§9Security Considerations

Replay protection may be needed depending on the environment. If the certification authority keeps a lot of state, replays may be detectable without the optional senderNonce and recipientNonce attributes, but developers of state-constrained PKI clients are strongly encouraged to use them.

Setting up a secure channel between a client and a CA or RA needs an out-of-band trust initiation step, which this document leaves out of scope. When no trust exists yet, for example while downloading trust anchors, the EnvelopedData or AuthEnvelopedData content types give the same shrouding that TLS would.

For mail, SMTP-over-TLS may protect only the first hop, so later relay hops may be neither authenticated nor encrypted. REQUIRETLS (RFC 8689) can request authenticated TLS at every hop, but risks non-delivery if a server on the path does not support it. For files, filesystem permissions can limit read access to the authorized user or group.

Protect the paperwork on its trip. Sealing it in an envelope that only the right person can open works everywhere, even when the road itself is not safe.

§8References