Patent Description:
The present disclosure generally relates to computer network security, and more specifically, to systems and methods for implementing and managing security policies for computing devices requesting access to a secure network via cloud-hosted services.

Certificate Authority (CA) software is used to create digital certificates, which are cryptographically-signed digital parallels to a driver's license or passport. Digital certificates are used for a wide variety of use cases, including user or website authentication, digitally signing software, or encrypting information between systems. The applications which use certificates have become very prevalent (e.g., millions of certificates in an organization), and thus tracking, managing, updating, and issuing the certificates securely is a challenge.

As a part of standard functionality, Certificate Lifecycle Management (CLM) software initiates network connections to the CA software, to perform functions such as requesting new certificates, renewing certificates, revoking certificates, or to obtain an inventory of issued certificates. These connections are initiated by the CLM software, typically on behalf of end-users of the CLM software, and communicate with Application Programming Interface (API) endpoints available from the CA software entity.

Many entities run CA software in their own environment, due to the sensitive nature of CAs and the cryptographic keys the entities use to do their job. As such, these CA systems are often protected with the highest levels of network and physical security controls available.

In contrast, many organizations wish to have their CLM software running in cloud-based or 3rd-party hosted environments, for the many benefits that cloud-hosted, or software as a service (SaaS) models can provide. This need for connectivity, and disparity of environments, produces challenges that are difficult to overcome. Contacting a customer's internally-hosted CA software from a cloud-hosted environment is difficult, if not impossible, due to the stringent controls that organizations place on their networks - especially around sensitive systems such as CAs. Currently available options for supporting this usage pattern would typically be to set up a Virtual Private Network (VPN) between the cloud-hosted software and the organization's network, or for the organization to expose their CA software to the Internet via reverse network proxy or similar technology. However, neither of these options are very appealing to CA users, as they open up the exposed "attack surface" between the two environments and increase the risk of a cyberattack.

<CIT> describes a method and system capable of choosing a back-up credentials authority in case an initial credentials authority is not available (for instance, is off-line) so that a requestor can obtain security credentials in a seamless manner.

This specification describes systems, methods, devices, and techniques for facilitating secure communication between a Certificate Authority (CA) and a Certificate Lifecycle Management (CLM) system with a mechanism to bridge the sensitive network environments that CA software typically sits in, to cloud environments where the CLM software is hosted. The approach utilizes outbound network connections from the sensitive CA data center, while enabling the CLM system to make use of the CA on a real-time, dynamic basis that CLM use cases dictate using a persistent client-initiated communication protocol. A persistent client-initiated communication protocol which may include WebSocket protocols or a "long poll" approach is leveraged in conjunction with a task management and orchestration and gateway framework to achieve the goal for persistent client communication.

In general, one innovative aspect of the subject matter described in this specification can be embodied in computer-implemented methods that include the actions of receiving, by a remote certificate authority (CA) gateway core from a certificate lifecycle management (CLM) application installed on a user device, a task request specifying a requested task and an identifier specifying a location for task execution, determining, by a task pickup interface on a remote CA gateway plug-in module and based on the task request, the requested task and that the location for task execution for the requested task is at an on-premises CA device, in response to determining the requested task and that the location of the task is at the on-premises CA device, storing, in a data storage device on the remote CA gateway plug-in module, a request task data entry that links the task request to the location for task execution, providing, from the remote CA gateway plug-in module, a notification to an on-premises CA gateway, wherein the remote CA gateway plug-in module maintains a constant communication connection with the on-premises CA gateway via a persistent client-initiated communication protocol, and in response to the notification, providing, from the on-premises CA gateway to the on-premises CA device, the requested task for task execution.

These and other embodiments can each optionally include one or more of the following features.

In some aspects, the on-premises CA gateway initiates the constant communication connection with the remote CA gateway plug-in module prior to receiving the task request.

In some aspects, the persistent client-initiated communication protocol is based on WebSocket protocols. In some aspects, the persistent client-initiated communication protocol is based on long polling communication protocols.

In some aspects, the method further includes receiving, at the on-premises CA gateway from the on-premises CA device, task results based on the task execution by the on-premises CA device, receiving, at the remote CA gateway plug-in module from the on-premises CA gateway via the persistent client-initiated communication protocol, the task results, storing, in the data storage device on the remote CA gateway plug-in module, the task results, determining, by a task assignment interface on the remote CA gateway plug-in module that the task results was received in the data storage device, and providing, by the remote CA gateway core, the task results to the user device via the CLM application.

In some aspects, the on-premises CA gateway includes a client connection manager, and the remote CA gateway plug-in module includes a client connection receiver.

In some aspects, the on-premises CA gateway includes a CA gateway plug-in module and a CA management gateway module configured to manage the constant communication connection with the remote CA gateway plug-in module and the CA gateway plug-in module in communication with the on-premises CA device.

In some aspects, the one or more client servers includes the on-premises CA gateway. In some aspects, the remote CA gateway plug-in module includes a task assignment interface that is configured to store the request task data in the data storage device.

In some aspects, the remote CA gateway plug-in module includes a cache API and the on-premises CA gateway includes a synchronizer configured to access the cache API to synchronize inventory and configuration data hosted on the remote CA gateway plug-in module.

For example, systems and methods discussed herein provide a mechanism to achieve a CA usage pattern, while requiring only a single piece of software deployed in the customer environment, which makes only outbound connections back to the CA gateway environment, essentially reversing the "communication initiation" requirement discussed herein. Additionally, outbound connections from private entity networks to cloud-hosted services are more acceptable - and secure - than allowing inbound connections to the CAs.

In accordance with some implementations, a device includes one or more processors, a non-transitory memory, and one or more programs; the one or more programs are stored in the non-transitory memory and configured to be executed by the one or more processors and the one or more programs include instructions for performing or causing performance of any of the methods described herein. In accordance with some implementations, a non-transitory computer readable storage medium has stored therein instructions, which, when executed by one or more processors of a device, cause the device to perform or cause performance of any of the methods described herein. In accordance with some implementations, a device includes: one or more processors, a non-transitory memory, and means for performing or causing performance of any of the methods described herein.

Various features and advantages of the foregoing subject matter is described below with respect to the figures. Additional features and advantages are apparent from the subject matter described herein and the claims.

The present disclosure can be understood more readily by reference to the following detailed description, examples, drawing, and claims. However, before the present devices, systems, and/or methods are disclosed and described, it is to be understood that this disclosure is not limited to the specific devices, systems, and/or methods disclosed unless otherwise specified, as such can, of course, vary. It is also to be understood that the terminology used herein is for the purpose of describing particular aspects only and is not intended to be limiting.

To address problems associated with facilitating secure communication between a Certificate Authority (CA) and a Certificate Lifecycle Management (CLM) system in a cloud-hosted environment, the present disclosure provides a mechanism to bridge the sensitive network environments that CA software typically sits in, to cloud environments where the CLM software is hosted. This approach uses outbound network connections from the sensitive CA data center, while enabling the CLM system to make use of the CA on a real-time, dynamic basis that CLM use cases dictate. A client-initiated communication protocol such as a WebSocket protocol, a long polling protocol, and the like, may be leveraged in conjunction with a task management and orchestration and gateway framework to achieve a goal for persistent client-initiated communication.

<FIG> is an example environment <NUM> in which a CLM system communicates task request to an on-premises CA through a CA gateway in a cloud environment. The example environment <NUM> includes a user device <NUM>, one or more CA gateway cloud-based server(s) <NUM>, and one or more client server(s) <NUM> that communicate over a data communication network <NUM>, e.g., a local area network (LAN), a wide area network (WAN), the Internet, a mobile network, or a combination thereof. Additionally, the example environment <NUM> includes an on-premises CA device <NUM>, which may be stored on the one or more client server(s) <NUM>, or as a separate device or server at the client site.

The user device <NUM> can include a desktop, a laptop, a server, or a mobile device, such as a smartphone, tablet computer, wearable device (e.g., smartwatch), in-car computing device, and/or other types of mobile devices. The user device <NUM> includes applications, such as the CLM application <NUM> for managing the task request and task result data to/from the remote CA gateway core <NUM> at the one or more CA gateway cloud-based server(s) <NUM>. The user device <NUM> can include other applications.

The one or more CA gateway cloud-based server(s) <NUM> manages the location of the task requests received from a CLM application from one or more user devices. The task management protocols of one or more CA gateway cloud-based server(s) <NUM> are based on a redundant load-balancing system by managing multiple clients (e.g., client server(s) <NUM>) so that a task is handled by one client server <NUM>. For example, there may be multiple clients that are able to service the requested task, and the redundant load-balancing system is responsible for ensuring that the task is performed by exactly one of the capable clients.

The one or more CA gateway cloud-based server(s) <NUM> include a remote CA gateway core <NUM> and a remote CA gateway plug-in <NUM>. The remote CA gateway core <NUM> presents a standardized interface to the CLM platform (e.g., user device <NUM> via the CLM application <NUM>), and allows the CA-specific plugin to perform the necessary functions on a given CAtype. The remote CA gateway plug-in <NUM> hosted in the cloud environment, includes a CA task database <NUM> to store task requests and task results, and a task assignment API <NUM> that communicates with the CA task database <NUM>. The remote CA gateway plug-in <NUM> also includes a task pickup API <NUM> that can process the necessary details of each task request received to execute the task (e.g., location data for task execution).

The remote CA gateway plug-in <NUM> further includes a client connection receiver <NUM> to provide a persistent client-initiated communication with another system (e.g., the on-premises CA gateway <NUM>) via a client connection manager <NUM> based on a persistent client-initiated communication protocol. In some implementations, WebSocket protocol may be used for the persistent client-initiated communication. WebSocket protocol is a computer communications protocol, providing full-duplex communication channels over a single TCP connection. Additionally, or alternatively, a long poll communication protocol may be used for the persistent client-initiated communication. A "long polling" technique is where the server elects to hold a client's connection open for as long as possible, delivering a response only after data becomes available or a timeout threshold is reached.

When the client connection receiver <NUM> in the cloud environment sees that a request task has appeared in the CA task database <NUM> for execution, the client connection receiver <NUM> can notify the on-premises CA management gateway <NUM> at the on-premises CA gateway <NUM> using the persistent client-initiated communication connection. A persistent client-initiated communication protocol (i.e., WebSocket, long polling, etc.) provides a technique where the cloud-hosted server holds a client connection open for as long as possible, delivering a response only after data becomes available (e.g., a task result such as a CA validation) or a timeout threshold has been reached (e.g., greater than one minute). After receiving a response, a client system can immediately send the next request. In some implementations, on the client side, a single request is managed. When the response is received, the client can initiate a new request, repeating this process as many times as necessary.

The remote CA gateway plug-in <NUM> further includes a cache API <NUM> that allows communication of configuration information and any state information about the on-premises CA gateway <NUM> hosted on-premises to be stored in the cloud environment. For example, the configuration information, task request/result data, and the like, can be centrally managed at the remote CA gateway plug-in module <NUM> in the cloud environment. Any time the CA gateway plug-in <NUM> needs to access this information, it can communicate with an inventory and configuration synchronizer (e.g., synchronizer <NUM>) at the CA management gateway <NUM>. The CA management gateway <NUM> includes an in-memory cache backed by access to the cache API <NUM> at the remote CA gateway plug-in <NUM> to fetch data from the hosted cloud environment as needed.

The one or more client servers can host the on-premises CA gateway <NUM> which manages and communicates with the remote CA gateway plug-in <NUM>. The term "on-premises" used throughout this disclosure refers to servers, devices, systems, etc., that are physically located at a client site, such that the CA modules discussed herein (e.g., the on-premises CA gateway <NUM>) are installed at the one or more client server(s) <NUM>. The on-premises CA gateway <NUM> includes a CA management gateway <NUM> and a CA gateway plug-in <NUM>. The CA management gateway <NUM> includes the synchronizer <NUM> and the client connection manager <NUM> for persistent communication with the client connection receiver <NUM>. The synchronizer <NUM> includes the in-memory cache backed by access to the cache API <NUM> at the remote CA gateway plug-in <NUM> to fetch data from the hosted cloud environment as needed. The CA gateway plug-in <NUM> manages the communications between the CA management gateway <NUM> and a CA application <NUM> on the on-premises CA gateway device <NUM>.

In an exemplary implementation, when a CA management gateway service (e.g., the on-premises CA gateway <NUM>) is installed and turned on at the one or more client servers <NUM>, the CA management gateway <NUM> initiates the network connection. For example, the CA management gateway <NUM> establishes a network connection via the client connection manager <NUM> to the client connection receiver <NUM> in the cloud environment though network <NUM>. This persistent client-initiated communication allows the client connection receiver <NUM> to record in the CA task database <NUM> that the CA management gateway <NUM> is configured, connected, and ready to receive tasks. In some implementations, WebSocket protocol may be used for the persistent client-initiated communication. WebSocket protocol is a computer communications protocol, providing full-duplex communication channels over a single TCP connection. Additionally, or alternatively, a long poll communication protocol may be used for the persistent client-initiated communication. A "long polling" technique is where the server elects to hold a client's connection open for as long as possible, delivering a response only after data becomes available or a timeout threshold is reached.

At this point (e.g., after the persistent client-initiated communication has been established), the client connection manager <NUM> and client connection receiver <NUM> maintain a constant connection, such that the CA management gateway <NUM> can be notified when a task is ready to be executed. When the CA management gateway <NUM> service is stopped for any reason (machine restart, etc.), this persistent client-initiated communication connection would be severed, allowing the client connection receiver <NUM> to mark the CA management gateway <NUM> as unavailable for receiving and executing tasks in the CA task database <NUM>.

In some implementations, an example execution of managing communications between a cloud-hosted certificate lifecycle management system (e.g., CA gateway cloud-based servers <NUM>) and an on-site CA system may be initiated when a CLM system sends a task request to execute a task at an on-site CA system (e.g., on-premises CA <NUM>). For example, the user device <NUM> using the CLM application <NUM> contacts the remote CA gateway core <NUM> in the cloud environment (e.g., CA gateway cloud-based servers <NUM>) with the task details. This causes the remote CA gateway plug-in <NUM> in the cloud environment to utilize the task assignment API <NUM> to place the pending task in the CA task database <NUM>. When the client connection receiver <NUM> at the remote CA gateway plug-in <NUM> sees that a task has appeared in the CAtask database <NUM> for execution, the client connection receiver <NUM> notifies the CA management gateway <NUM> at the client server(s) <NUM> using an existing connection (e.g., a persistent client-initiated communication protocol) via the client connection manager <NUM>. The CA management gateway <NUM> can then communicate with and use the task pickup API <NUM> at the remote CA gateway plug-in <NUM> to get the necessary details to execute the task (e.g., location data for task execution). The task is then executed by calling a CA gateway plug-in <NUM> at the client server(s) <NUM>, which in turn communicates with the CA application <NUM> at the on-premises CA device <NUM>.

Additionally, results from the on-premises CA device <NUM> can follow this example communication path in reverse. For example, task results from CA application <NUM> can be communicated through the CA gateway plug-in <NUM> to the CA management gateway <NUM>. The task pickup API <NUM> can add the task result data in the CA task database <NUM>. The task assignment API <NUM>, after seeing the task result data being stored in the CA task database <NUM>, can then return task results to the originator of the task request via the CA gateway core <NUM>. The CA gateway core <NUM> can then communicate the task results (e.g., CA validation data) back to the CLM system (e.g. user device <NUM> via CLM application <NUM>). This process appears synchronous to the CLM system, so is well-suited for interactive use. For example, the end user receives the success and/or failure of the requested task shortly after it is requested via the persistent client-initiated communication protocol, rather than needing to communicate back with the CA at a subsequent time.

In some implementations, one or more of the components, servers, devices, etc. of the example environment <NUM> are virtualized using either a hypervisor or a container. For example, a hypervisor may utilize a full operating system executed on top of a host operating system where the hypervisor manages different virtual machines and each virtual machine may utilize a different operating system. Container-based virtualization (also referred to as operating system virtualization) isolates the processes utilizing the host operating system instead of trying to run an entire guest operating system. Each container corresponds to each virtual environment. The operating system provides process isolation between virtual environments and performs resource management and designates for each process, i.e., each virtual environment or each container, its own filesystem, memory, and devices.

<FIG> illustrates a timing diagram <NUM> of a method for executing a task at an on-premises CA from a request via a cloud-hosted certificate lifecycle management system via a persistent client-initiated communication protocol, according to examples of the present disclosure. A task request data message is generated at and transmitted from the device <NUM> to the cloud-based servers <NUM>. However, until the client server(s) <NUM> have initiated the persistent communication protocol to the cloud-based servers <NUM> via a CA management gateway, the cloud-based servers <NUM> will return an unavailable notification. For example, when the CA management gateway <NUM> service is stopped for any reason (machine restart, etc.), this persistent client-initiated communication connection would be severed, allowing the client connection receiver <NUM> to mark the CA management gateway <NUM> as unavailable for receiving and executing tasks in the CA task database <NUM>.

After a constant communication connection is initiated by the client server(s) <NUM> with the cloud-based server(s) <NUM>, then a task request can be processed by the system. Thus, as illustrated in <FIG>, a task request data message is generated at and transmitted from the device <NUM> to the cloud-based servers <NUM>, at which point, since a persistent client-initiated communication connection is on, the task request data message is effectively sent to the client server(s) <NUM> and to the on-premises CA device <NUM>. The CA device <NUM> responds to the task request message with the executed task results message through the client server(s) <NUM>, the cloud-based server(s) <NUM>, and back to the device <NUM>. For example, as discussed herein, when a CLM system needs to execute a task on an on-premises CA, it contacts the CA gateway in the cloud environment with the task details. This causes a remote CA gateway plug-in in the cloud environment to utilize a task assignment API to place the pending task in a CA task database. When the client connection receiver at the remote CA gateway plug-in sees that a task has appeared in the database for execution, the client connection receiver notifies the CA management gateway at the client server(s) <NUM> using an existing constant client connection (e.g., a persistent client-initiated communication protocol such as WebSocket protocol, long polling protocols, etc.). The CA management gateway can then communicate with and use the task pickup API at the remote CA gateway plug-in to get the necessary details to execute the task (e.g., location data for task execution). The task is then executed by calling a CA gateway plug-in at the client server(s) <NUM>, which in turn communicates with the on-premises CA. Results from the on-premises CA then follow this path in reverse, flowing back through the CA gateway plug-in to the task pickup API. The task result data is then placed in the CA task database, where the task assignment API can then return results to the caller in the CA gateway core in the cloud-based server(s) <NUM>, which in turn communicates the task results (e.g., CA validation data) back to the CLM system (e.g. user device <NUM> via CLM application <NUM>).

<FIG> illustrates a flowchart of an example process <NUM> for managing a system for cloud-hosted CLM to on-premises CA communications. Operations of the process <NUM> can be implemented, for example, by a system that includes one or more data processing apparatus, such as one or more CA gateway cloud-based server(s) <NUM> and on-premises CA gateway <NUM> on one or more client server(s) <NUM> of <FIG>. The process <NUM> can also be implemented by instructions stored on computer storage medium, where execution of the instructions by a system that includes a data processing apparatus cause the data processing apparatus to perform the operations of the process <NUM>.

In an exemplary implementation, one or more CA gateway cloud-based servers manages the location of the task requests received from a CLM application from one or more user devices. The task management protocols of the one or more CA gateway cloud-based servers are based on a redundant load-balancing system by managing multiple clients so that a task is handled by an on-premise CA gateway at a client site. For example, there may be multiple clients that are able to service the requested task, and the redundant load-balancing system of process <NUM> is responsible for ensuring that the task is performed by exactly one of the capable clients.

The system receives a constant communication connection initialization from an on-premise CA gateway (<NUM>). The constant communication connection initialization may be received by a client connection receiver (e.g., client connection receiver <NUM>) at the remote certificate authority gateway plug-in module on the cloud-based server(s). The constant communication connection provides a persistent client-initiated communication between the cloud-server(s) and the on-premise CA gateway at the client site. In some implementations, WebSocket protocol may be used for the persistent client-initiated communication. WebSocket protocol is a computer communications protocol, providing full-duplex communication channels over a single TCP connection. Additionally, or alternatively, a long poll communication protocol may be used for the persistent client-initiated communication. A "long polling" technique is where the server elects to hold a client's connection open for as long as possible, delivering a response only after data becomes available or a timeout threshold is reached.

The system receives a task request specifying a requested task and an identifier specifying a location for task execution (<NUM>). The task request may be received by a remote CA gateway core (e.g., remote CA gateway core <NUM>) from a CLM application installed on a user device (e.g., CLM application <NUM> on user device <NUM>). For example, when a CLM system needs to execute a task on the on-premises CA, the CLM system contacts a CA gateway in the cloud environment with the task details.

The system determines the requested task and that the location for task execution for the requested task is at an on-premises CA device (<NUM>). The system may determine the requested task and that the location for task execution for the requested task by a task pickup interface (e.g., task pickup API <NUM>) on a remote CA gateway plug-in module (e.g., remote CA gateway plug-in module <NUM>). For example, contacting the CA gateway in the cloud environment with the task details initiates the remote CA gateway plug-in to communicate with a task assignment API.

In response to determining the requested task and that the location of the task is at the on-premises CA device, the system stores a request task data entry that links the task request to the location for task execution (<NUM>). The system may store the request task data entry in a data storage device (e.g., CA task database <NUM>) on the remote CA gateway plug-in module (e.g., remote CA gateway plug-in module <NUM>). For example, contacting the CA gateway in the cloud environment with the task details initiates the remote CA gateway plug-in to use the task assignment API to place the pending task in a CA task database.

The system provides a notification via a persistent client-initiated communication protocol (<NUM>). The notification may be provided from the remote CA gateway plug-in module (e.g., remote CA gateway plug-in module <NUM>) to the on-premises CA gateway on one or more client servers (e.g., on-premises CA gateway <NUM> on one or more client servers <NUM>). In some implementations, the remote CA gateway plug-in module maintains a constant communication connection with the on-premises CA gateway via a persistent client-initiated communication protocol. In some implementations, the persistent client-initiated communication protocol is based on WebSocket communication protocols. Alternatively, in some implementations, the persistent client-initiated communication protocol is based on long poll communication protocols. For example, when a client connection receiver (e.g., client connection receiver <NUM>) in the CA gateway cloud environment sees that a request task has appeared in the CA task database for execution, the client connection receiver notifies the CA management gateway (e.g., on-premises CA management gateway <NUM> on the on-premises CA gateway <NUM>) using an existing persistent client connection.

In response to the providing of the notification, the system provides the requested task for task execution to the on-premises CA device (<NUM>). The requested task may be provided to the on-premises CA device (e.g., on-premises CA device <NUM>) from the on-premises CA gateway (e.g., on-premises CA gateway <NUM>) hosted on site by one or more client servers.

In some implementations, the process <NUM> further includes receiving, at the on-premises CA gateway from the on-premises CA device, task results based on the task execution by the on-premises CA device, receiving the task results at the remote CA gateway plug-in module via the persistent client-initiated communication protocol storing the task results in the data storage device, determining that the task results was received in the data storage device, and providing the task results to the user device. For example, task results from the CA follow the task request path in reverse, flowing back through the CA gateway plug-in and up to the task pickup API. The result data may then be stored in the CA task database, where the task assignment API may initiate the return to the caller in the CA gateway core. The CA gateway core in turn communicates the task results to the CLM system. Thus, this send and receive process appears synchronous to the CLM system, so is well-suited for interactive use because the end user (e.g., at the user device <NUM> utilizing CLM application <NUM>) needs to know the success/failure of the requested task shortly after it is requested, rather than needing to check back later.

In an exemplary implementation, the CA database is hosted in the cloud environment utilizing a cache API. The cache API (e.g., cache API <NUM>) allows communication of configuration information and any state information about the CA management gateway hosted on-premises to be stored in the cloud environment, where the configuration information, task request/result data, and the like, can be centrally managed at the remote CA gateway plug-in module in the cloud environment. Any time the CA gateway plug-in needs to access this information, it can communicate with an inventory and configuration synchronizer (e.g., synchronizer <NUM>) at the CA management gateway. The CA management gateway (e.g., CA management gateway <NUM>) includes an in-memory cache backed by access to the cache API at the remote CA gateway plug-in to fetch data from the hosted cloud environment as needed.

<FIG> illustrates an example computer architecture <NUM> for a computer <NUM> capable of executing the software components described herein for the sending/receiving and processing of tasks for the CA components. The computer architecture <NUM> (also referred to herein as a "server") shown in <FIG> illustrates a server computer, workstation, desktop computer, laptop, or other computing device, and may be utilized to execute any aspects of the software components presented herein described as executing on a host server, or other computing platform. The computer <NUM> preferably includes a baseboard, or "motherboard," which is a printed circuit board to which a multitude of components or devices may be connected by way of a system bus or other electrical communication paths. In one illustrative embodiment, one or more central processing units (CPUs) <NUM> operate in conjunction with a chipset <NUM>. The CPUs <NUM> can be programmable processors that perform arithmetic and logical operations necessary for the operation of the computer <NUM>.

The CPUs <NUM> preferably perform operations by transitioning from one discrete, physical state to the next through the manipulation of switching elements that differentiate between and change these states. Switching elements may generally include electronic circuits that maintain one of two binary states, such as flip-flops, and electronic circuits that provide an output state based on the logical combination of the states of one or more other switching elements, such as logic gates. These basic switching elements may be combined to create more complex logic circuits, including registers, adders-subtractors, arithmetic logic units, floating-point units, or the like.

The chipset <NUM> provides an interface between the CPUs <NUM> and the remainder of the components and devices on the baseboard. The chipset <NUM> may provide an interface to a memory <NUM>. The memory <NUM> may include a random access memory (RAM) used as the main memory in the computer <NUM>. The memory <NUM> may further include a computer-readable storage medium such as a read-only memory (ROM) or non-volatile RAM (NVRAM) for storing basic routines that that help to startup the computer <NUM> and to transfer information between the various components and devices. The ROM or NVRAM may also store other software components necessary for the operation of the computer <NUM> in accordance with the embodiments described herein.

According to various embodiments, the computer <NUM> may operate in a networked environment using logical connections to remote computing devices through one or more networks <NUM>, a local-area network (LAN), a wide-area network (WAN), the Internet, or any other networking topology known in the art that connects the computer <NUM> to the devices and other remote computers. The chipset <NUM> includes functionality for providing network connectivity through one or more network interface controllers (NICs) <NUM>, such as a gigabit Ethernet adapter. For example, the NIC <NUM> may be capable of connecting the computer <NUM> to other computer devices in the utility provider's systems. It should be appreciated that any number of NICs <NUM> may be present in the computer <NUM>, connecting the computer to other types of networks and remote computer systems beyond those described herein.

The computer <NUM> may be connected to at least one mass storage device <NUM> that provides non-volatile storage for the computer <NUM>. The mass storage device <NUM> may store system programs, application programs, other program modules, and data, which are described in greater detail herein. The mass storage device <NUM> may be connected to the computer <NUM> through a storage controller <NUM> connected to the chipset <NUM>. The mass storage device <NUM> may consist of one or more physical storage units. The storage controller <NUM> may interface with the physical storage units through a serial attached SCSI (SAS) interface, a serial advanced technology attachment (SATA) interface, a fiber channel (FC) interface, or other standard interface for physically connecting and transferring data between computers and physical storage devices.

The computer <NUM> may store data on the mass storage device <NUM> by transforming the physical state of the physical storage units to reflect the information being stored. The specific transformation of physical state may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the physical storage units, whether the mass storage device <NUM> is characterized as primary or secondary storage, or the like. For example, the computer <NUM> may store information to the mass storage device <NUM> by issuing instructions through the storage controller <NUM> to alter the magnetic characteristics of a particular location within a magnetic disk drive unit, the reflective or refractive characteristics of a particular location in an optical storage unit, or the electrical characteristics of a particular capacitor, transistor, or other discrete component in a solid-state storage unit. Other transformations of physical media are possible without departing from the scope of the present description, with the foregoing examples provided only to facilitate this description. The computer <NUM> may further read information from the mass storage device <NUM> by detecting the physical states or characteristics of one or more particular locations within the physical storage units.

The mass storage device <NUM> may store an operating system <NUM> utilized to control the operation of the computer <NUM>. According to some embodiments, the operating system includes the LINUX operating system. According to another embodiment, the operating system includes the WINDOWS® SERVER operating system from MICROSOFT Corporation of Redmond, Wash. According to further embodiments, the operating system may include the UNIX or SOLARIS operating systems. It should be appreciated that other operating systems may also be utilized. The mass storage device <NUM> may store other system or application programs and data utilized by the computer <NUM>, such as a CA module <NUM> utilized by the computer <NUM> to manage communications in a communication network for CA gateway communications, as described herein.

In some embodiments, the mass storage device <NUM> may be encoded with computer-executable instructions that, when loaded into the computer <NUM>, transforms the computer <NUM> from being a general-purpose computing system into a special-purpose computer capable of implementing the embodiments described herein. These computer-executable instructions transform the computer <NUM> by specifying how the CPUs <NUM> transition between states, as described above. According to some embodiments, from the host server <NUM> perspective, the mass storage device <NUM> stores computer-executable instructions that, when executed by the computer <NUM>, perform portions of the process <NUM> of managing cloud-hosted CLM to on-premises CA communications, as described herein. In further embodiments, the computer <NUM> may have access to other computer-readable storage medium in addition to or as an alternative to the mass storage device <NUM>.

The computer <NUM> may also include an input/output controller <NUM> for receiving and processing input from a number of input devices, such as a keyboard, a mouse, a touchpad, a touch screen, an electronic stylus, or other type of input device. Similarly, the input/output controller <NUM> may provide output to a display device, such as a computer monitor, a flat-panel display, a digital projector, a printer, a plotter, or other type of output device. It will be appreciated that the computer <NUM> may not include all of the components shown in <FIG>, may include other components that are not explicitly shown in <FIG>, or may utilize an architecture completely different than that shown in <FIG>.

Those of ordinary skill in the art will appreciate that well-known systems, methods, components, devices, and circuits have not been described in exhaustive detail so as not to obscure more pertinent aspects of the example implementations described herein. Moreover, other effective aspects and/or variants do not include all of the specific details described herein. Thus, several details are described in order to provide a thorough understanding of the example aspects as shown in the drawings. Moreover, the drawings merely show some example embodiments of the present disclosure and are therefore not to be considered limiting.

Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on computer storage medium for execution by, or to control the operation of, data processing apparatus. Alternatively, or in addition, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal.

A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment.

Devices suitable for storing computer program instructions and data include all forms of non volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks.

Claim 1:
A computer-implemented method, comprising:
receiving, by a remote certificate authority, CA, gateway core (<NUM>) from a certificate lifecycle management, CLM, application (<NUM>) installed on a user device (<NUM>), a task request specifying a requested task and an identifier specifying a location for task execution;
determining, by a task pickup interface (<NUM>) on a remote CA gateway plug-in module (<NUM>) and based on the task request, the requested task and that the location for task execution for the requested task is at an on-premises CA device (<NUM>);
in response to determining the requested task and that the location of the task is at the on-premises CA device (<NUM>), storing, in a data storage device on the remote CA gateway plug-in module (<NUM>), a request task data entry that links the task request to the location for task execution;
providing, from the remote CA gateway plug-in module (<NUM>), a notification to an on-premises CA gateway (<NUM>), wherein the remote CA gateway plug-in module (<NUM>) maintains a constant communication connection with the on-premises CA gateway (<NUM>) via a persistent client-initiated communication protocol; and
in response to the notification, providing, from the on-premises CA gateway (<NUM>) to the on-premises CA device (<NUM>), the requested task for task execution.