DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.

DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
SSL Offloading feature allows loadbalancers to handle encryption/decryption of HTTP(s) traffic giving plaintext HTTP to the backend servers freeing them from the resource intensive task of handling encryption/decryption. Major loadblancers like the Netscaler and F5 have this functionality. This document is a functional sepc for adding certificate mangaement and implementing SSL offload capability for cloudstack provisioned loadbalancers.
Version |
Author |
Date |
Changes |
|---|---|---|---|
V1.0 |
Syed Ahmed |
07-Oct-2013 |
Initial Draft |
AssignToLoadBalancerRule if there is a certificate id in the request execute() method of the command callsassignSslCertToLoadBalancer(lb_id, certId) in LoadBalancingRulesManagerImplassignSslCertToLoadBalancer checks if the loadbalancer is capable of SSL. If not error is returned.AddapplyLoadBalancerConfig which calls applyLoadBalancerRules with the lbIdgetLoadBalancerRuleToApply function should also add getSslCertificates(lbId) which gets called from applyLoadBalancerConfigrule has SSL certificate info as well.applyLBRules of the NetscalerElement, the SSL info is passed inside the rule.NetscalerElement creates a LoadBalancerTO which transfers the params to the resouce layer.LoadBalancerTO should contain SslCertTO for holding certificate information.Capability in as SSLNetscalerElement when checking for canHandleLbRules will check for SSL rule and respond accordinglyLoadBalancingRule will have a new static class LbSslCert and will have a list List<LbSslCert> for holding the certificate(s)LoadBalancerTO will have a new parameter for passing certificate information.
// rule for SSL certificates
public class LoadBalancingRule {
....
public static class LbSslCert()
{
String cert;
String key;
String password;
boolean _revoke;
public LbSslCert(cert,key,password) {}
}
public void setSslCerts(List<SslCert> certs){}
public void setSslCerts(List<SslCert> certs){}
...
}
ssl_certs(id, uuid, account_id, cert, key, password)
Field name |
Type |
Allow nulls |
Key |
Default value |
|---|---|---|---|---|
id |
bigint(20) unsigned |
No |
Primary |
Null |
uuid |
varchar(40) |
Yes |
Unique |
Null |
account_id |
bigint(20) |
No |
Mul |
Null |
cert |
varchar(255) |
No |
None |
Null |
key |
varchar(255) |
No |
None |
Null |
password |
varchar(255) |
Yes |
None |
Null |
created |
datatime |
Yes |
None |
Null |
revoke |
tinyint(1) |
No |
None |
0 |
load_balancer_cert_map(id, load_balancer_id, cert_id, revoke, state)
Field name |
Type |
Allow nulls |
Key |
Default value |
|---|---|---|---|---|
id |
bigint(20) unsigned |
No |
Primary |
Null |
load_balancer_id |
bigint(20) |
No |
Mul |
Null |
cert_id |
bigint(20) |
No |
Mul |
Null |
revoke |
tinyint(1) |
No |
None |
0 |
state |
varchar(40) |
YES |
None |
NULL |
This section lists the new webservice APIs for Certificate management. They are derived from their AWS Equivalant ( UploadServerCertificate, ListServerCertificates, GetServerCertificate, DeleteServerCertificate )
Uploads a new SSL certificate-key pair
Request parameters:
Response parameters:
Deletes an existing SSL cert from cloudstack.
Request parameters:
Response parameters:
updates an existing certificate-key pair
Request parameters:
Response parameters:
lists the certificates for an Id or an account
Request parameters:
Response parameters:
The response is a list of following
For associating the certificates to loadbalancing rules, we need to add the certificate id parameter to following loadbalancer apis.
Request parameter to be added:
Request parameter to be added:
Right now, this feature will only be available via the API. UI support is not yet scoped.
No external dependecies are being added for this feature. All code will be developed within Cloudstack’s scope.