IP Library Granted Patent US 10,237,078
Granted Patent B2
US 10,237,078 · App. 14/692,397 · Granted Mar 19, 2019

Supporting secure sessions in a cloud-based proxy service

Inventors: Matthew Browning Prince (San Francisco, CA); Srikanth N. Rao (San Francisco, CA); Lee Hahn Holloway (Santa Cruz, CA); Ian Gerald Pye (Santa Cruz, CA)
Assignee: CLOUDFLARE, INC.
H04L9/3268H04L63/0823H04L63/0884H04L67/28H04L63/0464H04L63/166H04W76/10
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,237,078
App. No.
14/692,397
Granted
Mar 19, 2019
Kind
B2
Abstract

A proxy server in a cloud-based proxy service receives a secure session request from a client device as a result of a Domain Name System (DNS) request for a domain resolving to the proxy server. The proxy server participates in a secure session negotiation with the client device including transmitting a digital certificate to the client device that is bound to domain and multiple other domains. The proxy server receives an encrypted request from the client device for an action to be performed on a resource that is hosted at an origin server corresponding to the domain. The proxy server decrypts the request and participates in a secure session negotiation with the origin server including receiving a digital certificate from the origin server. The proxy server encrypts the decrypted request using the digital certificate from the origin server and transmits the encrypted request to the origin server.

Claims (73)

1. A method in a proxy server, comprising:

receiving a first secure session request from a first client device for a secure session, wherein the first secure session request is received at the proxy server as a result of a DNS (Domain Name System) request for a first domain resolving to an IP address of the proxy server, wherein the first domain is one of a plurality of domains that resolve to the IP address of the proxy server;

participating in a secure session negotiation with the first client device including retrieving, from a local certificate store, a digital certificate associated with a destination IP address of the first secure session request, and transmitting the digital certificate to the first client device, wherein the digital certificate is bound to the first domain and a set of one or more other domains;

receiving an encrypted first request from the first client device for an action to be performed on a resource;

decrypting the encrypted first request;

determining, from the decrypted first request, that the first domain is a destination of the first request;

determining whether a first origin server hosting the first domain supports secure sessions with the proxy server, wherein the determining whether the first origin server supports secure sessions with the proxy server includes:

accessing a support secure session data store, wherein the support secure session store is populated by having the proxy server periodically attempt to establish a secure session with the first origin server and record the outcome as a record in the support secure session data store, and

determining, based upon records stored in the support secure session data store, whether the first origin server has previously supported secure sessions with the proxy server; and

responsive to determining that the first origin server does not support secure sessions with the proxy server, transmitting the decrypted first request unencrypted to the first origin server for the first domain.

2. The method of claim 1 , further comprising:

receiving a second secure session request from a second client device for a secure session, wherein the second request is received at the proxy server as a result of a DNS request for a second domain resolving to an IP address of the proxy server, wherein the second domain is one of the plurality of domains that resolve to the IP address of the proxy server;

participating in a secure session negotiation with the second client device including transmitting a digital certificate to the second client device, wherein the second domain is one of the set of other domains of which the digital certificate is bound;

receiving an encrypted second request from the second client device for an action to be performed on a resource;

decrypting the encrypted second request;

determining, from the decrypted second request, that the second domain is a destination of the second request;

participating in a secure session negotiation with a second origin server that handles the second domain including establishing a set of one or more session keys for a secure session between the proxy server and the second origin server;

encrypting the decrypted second request using at least some of the established set of one or more session keys for the secure session between the proxy server and the second origin server; and

transmitting, to the second origin server, the encrypted second request that was encrypted using at least some of the established set of one or more session keys for the secure session between the proxy server and the second origin server.

3. The method of claim 2 , wherein the first and second secure session requests do not include a name of the first and second domains respectively.

4. The method of claim 2 , wherein participating in the secure session negotiation with the second origin server includes transmitting a Transport Layer Security (TLS) client hello message that identifies the second domain.

5. The method of claim 1 , wherein the domains bound to the digital certificate transmitted to the first client device each share a root domain.

6. The method of claim 1 , wherein the domains bound to the digital certificate transmitted to the first client device are each owned or operated by a same domain owner.

7. The method of claim 1 , wherein the domains bound to the digital certificate transmitted to the first client device each host content in a same category of content.

8. A non-transitory computer-readable storage medium that provides instructions that, when executed by a processor of a proxy server, causes said processor to perform operations comprising:

receiving a first secure session request from a first client device for a secure session, wherein the first secure session request is received at the proxy server as a result of a DNS (Domain Name System) request for a first domain resolving to an IP address of the proxy server, wherein the first domain is one of a plurality of domains that resolve to the IP address of the proxy server;

participating in a secure session negotiation with the first client device including retrieving, from a local certificate store, a digital certificate associated with a destination IP address of the first secure session request, and transmitting the digital certificate to the first client device, wherein the digital certificate is bound to the first domain and a set of one or more other domains;

receiving an encrypted first request from the first client device for an action to be performed on a resource;

decrypting the encrypted first request;

determining, from the decrypted first request, that the first domain is a destination of the first request;

determining whether a first origin server hosting the first domain supports secure sessions with the proxy server, wherein the determining whether the first origin server supports secure sessions with the proxy server includes:

accessing a support secure session data store, wherein the support secure session store is populated by having the proxy server periodically attempt to establish a secure session with the first origin server and record the outcome as a record in the support secure session data store, and

determining, based upon records stored in the support secure session data store, whether the first origin server has previously supported secure sessions with the proxy server; and

responsive to determining that the first origin server does not support secure sessions with the proxy server, transmitting the decrypted first request unencrypted to the first origin server for the first domain.

9. The non-transitory computer-readable storage medium of claim 8 , further comprising instructions, that when executed by the processor, causes said processor to perform the operations comprising:

receiving a second secure session request from a second client device for a secure session, wherein the second request is received at the proxy server as a result of a DNS request for a second domain resolving to an IP address of the proxy server, wherein the second domain is one of the plurality of domains that resolve to the IP address of the proxy server;

participating in a secure session negotiation with the second client device including transmitting a digital certificate to the second client device, wherein the second domain is one of the set of other domains of which the digital certificate is bound;

receiving an encrypted second request from the second client device for an action to be performed on a resource;

decrypting the encrypted second request;

determining, from the decrypted second request, that the second domain is a destination of the second request;

participating in a secure session negotiation with a second origin server that handles the second domain including establishing a set of one or more session keys for a secure session between the proxy server and the second origin server;

encrypting the decrypted second request using at least some of the established set of one or more session keys for the secure session between the proxy server and the second origin server; and

transmitting, to the second origin server, the encrypted second request that was encrypted using at least some of the established set of one or more session keys for the secure session between the proxy server and the second origin server.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the first and second secure session requests include a name of the first and second domains respectively.

11. The non-transitory computer-readable storage medium of claim 9 , wherein participating in the secure session negotiation with the second origin server includes transmitting a Transport Layer Security (TLS) client hello message that identifies the second domain.

12. The non-transitory computer-readable storage medium of claim 8 , wherein the domains bound to the digital certificate transmitted to the first client device each share a root domain.

13. The non-transitory computer-readable storage medium of claim 8 , wherein the domains bound to the digital certificate transmitted to the first client device are each owned or operated by a same domain owner.

14. The non-transitory computer-readable storage medium of claim 8 , wherein the domains bound to the digital certificate transmitted to the first client device each host content in a same category of content.

15. An apparatus, comprising:

a proxy server that includes a set of one or more processors and a set of one or more non-transitory computer-readable storage mediums storing instructions, that when executed by the set of processors, cause the set of processors to perform the following operations:

receiving a first secure session request from a first client device for a secure session, wherein the first secure session request is received at the proxy server as a result of a DNS (Domain Name System) request for a first domain resolving to an IP address of the proxy server, wherein the first domain is one of a plurality of domains that resolve to the IP address of the proxy server;

participating in a secure session negotiation with the first client device including retrieving, from a local certificate store, a digital certificate associated with a destination IP address of the first secure session request, and transmitting the digital certificate to the first client device, wherein the digital certificate is bound to the first domain and a set of one or more other domains;

receiving an encrypted first request from the first client device for an action to be performed on a resource;

decrypting the encrypted first request;

determining, from the decrypted first request, that the first domain is a destination of the first request; and

determining whether a first origin server hosting the first domain supports secure sessions with the proxy server, wherein the determining whether the first origin server supports secure sessions with the proxy server includes:

accessing a support secure session data store, wherein the support secure session store is populated by having the proxy server periodically attempt to establish a secure session with the first origin server and record the outcome as a record in the support secure session data store, and

determining, based upon records stored in the support secure session data store, whether the first origin server has previously supported secure sessions with the proxy server; and

responsive to determining that the first origin server does not support secure sessions with the proxy server, transmitting the decrypted first request unencrypted to the first origin server for the first domain.

16. The apparatus of claim 15 , wherein the set of non-transitory computer-readable storage mediums further stores instructions, that when executed by the set of processors, cause the set of processors to perform the following operations:

receiving a second secure session request from a second client device for a secure session, wherein the second request is received at the proxy server as a result of a DNS request for a second domain resolving to an IP address of the proxy server, wherein the second domain is one of the plurality of domains that resolve to the IP address of the proxy server;

participating in a secure session negotiation with the second client device including transmitting a digital certificate to the second client device, wherein the second domain is one of the set of other domains of which the digital certificate is bound;

receiving an encrypted second request from the second client device for an action to be performed on a resource;

decrypting the encrypted second request;

determining, from the decrypted second request, that the second domain is a destination of the second request;

participating in a secure session negotiation with a second origin server that handles the second domain including establishing a set of one or more session keys for a secure session between the proxy server and the second origin server;

encrypting the decrypted second request using at least some of the established set of one or more session keys for the secure session between the proxy server and the second origin server; and

transmitting, to the second origin server, the encrypted second request that was encrypted using at least some of the established set of one or more session keys for the secure session between the proxy server and the second origin server.

17. The apparatus of claim 16 , wherein the first and second secure session requests do not include a name of the first and second domains respectively.

18. The apparatus of claim 16 , wherein participating in the secure session negotiation with the second origin server includes transmitting a Transport Layer Security (TLS) client hello message that identifies the second domain.

19. The apparatus of claim 15 , wherein the domains bound to the digital certificate transmitted to the first client device each share a root domain.

20. The apparatus of claim 15 , wherein the domains bound to the digital certificate transmitted to the first client device are each owned or operated by a same domain owner.

21. The apparatus of claim 15 , wherein the domains bound to the digital certificate transmitted to the first client device each host content in a same category of content.

Assignments (2)
SECURITY INTEREST Recorded May 20, 2024
From: CLOUDFLARE, INC.
To: CITIBANK, N.A.
Reel/Frame 067472/0246 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 21, 2015
From: PRINCE, MATTHEW BROWNING; HOLLOWAY, LEE HAHN; RAO, SRIKANTH N.; PYE, IAN GERALD
To: CLOUDFLARE, INC.
Reel/Frame 035461/0913 →
Continuity (2)
Continuation 13193574 · Jul 28, 2011
Related Publication 20150229481A1 · Aug 13, 2015
Cited By (1)
US 12,368,712