TLS ALPN usage in the Session Initiation Protocol (SIP)
Edvina AB
Sollentuna
SE
+46 8 5000 1625
oej@edvina.net
Art
Internet Engineering Task Force
SIP
TLS
ALPN
Many SIP specifications use other protocols in addition to the core SIP protocol, like HTTP and MSRP. In order to be able to
use multiple protocols on the same port with TLS, a TLS Application Protocol Negotiation Extension (ALPN) protocol ID is
needed (RFC 7301).
This document registers "sip/2" as the ALPN protocol ID for the SIP protocol version 2.0.
Introduction
A modern SIP server not only supports the Session Initation Protocol v2.0 (RFC 3261), but also needs to support HTTP and possibly other related protocols, like MSRP.
To reduce the number of ports used, a SIP server supporting Transport Layer Security (TLS) can support multiple protocols
on the same port, provided the clients signal protocol usage with ALPN.
ALPN registration
Registration following the specification in RFC 7301
- Protocol: SIP
- Identification Sequence: 0x73 0x69 0x70 0x2f 0x32 (“sip/2")
- Reference: RFC 3261
Acknowledgements
This document was inspired by registration feedback from Rich Salz.
IANA Considerations
This document registres a new ALPN in the "Application-Layer Protocol Negotiation (ALPN) Protocol IDs"
registry under the existing "Transport Layer Security (TLS) Extensions" heading.
Security Considerations
This document modifies the behaviour of compliant SIP servers when being used by compliant SIP implementations (servers and clients). It does not
add any known security issues to the protocol.
For security considerations related to usage of ALPN in TLS, see RFC 7301
Normative References
SIP: Session Initiation Protocol
This document describes Session Initiation Protocol (SIP), an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences. [STANDARDS-TRACK]
Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension
This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.