<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style>
<!--
@font-face
{font-family:"Cambria Math"}
@font-face
{font-family:Calibri}
@font-face
{font-family:Tahoma}
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif"}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif"}
span.EmailStyle17
{font-family:"Calibri","sans-serif";
color:#1F497D}
.MsoChpDefault
{font-family:"Calibri","sans-serif"}
@page WordSection1
{margin:1.0in 1.0in 1.0in 1.0in}
ol
{margin-bottom:0in}
ul
{margin-bottom:0in}
-->
</style><style type="text/css" id="owaParaStyle"></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" fpstyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Hello Samuel,
<div><br>
</div>
<div>Just noting that the link below shows current-state Barbican. We are in the process of designing SSL certificate support for Barbican via blueprints such as this one: <a href="https://wiki.openstack.org/wiki/Barbican/Blueprints/ssl-certificates" target="_blank" style="font-size: 10pt;">https://wiki.openstack.org/wiki/Barbican/Blueprints/ssl-certificates</a></div>
<div>We intend to discuss this feature in Atlanta to enable coding in earnest for Juno.</div>
<div><br>
</div>
<div>The Container resource is intended to capture/store the final certificate details.</div>
<div><br>
</div>
<div>Thanks,</div>
<div>John</div>
<div><br>
</div>
<div><br>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div id="divRpF223864" style="direction: ltr;"><font face="Tahoma" size="2" color="#000000"><b>From:</b> Samuel Bercovici [SamuelB@Radware.com]<br>
<b>Sent:</b> Thursday, May 01, 2014 12:50 PM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions); os.vbvs@gmail.com<br>
<b>Subject:</b> Re: [openstack-dev] [Neutron] [LBaaS][VPN][Barbican] SSL cert implementation for LBaaS and VPN<br>
</font><br>
</div>
<div></div>
<div>
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D">Hi Vijay,</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D">I have looked at the Barbican APIs –
<a href="https://github.com/cloudkeep/barbican/wiki/Application-Programming-Interface" target="_blank">
https://github.com/cloudkeep/barbican/wiki/Application-Programming-Interface</a></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D">I was no able to see a “native” API that will accept an SSL certificate (private key, public key, CSR, etc.) and will store it.</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D">We can either store the whole certificate as a single file as a secret or use a container and store all the certificate parts as secrets.</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D">I think that having LBaaS reference Certificates as IDs using some service is the right way to go so this might be achived by either:</span></p>
<p class="MsoListParagraph" style="text-indent:-.25in"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"><span style="">1.<span style="font:7.0pt "Times New Roman"">
</span></span></span><span dir="LTR"></span><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D">Adding to Barbican and API to store / generate certificates</span></p>
<p class="MsoListParagraph" style="text-indent:-.25in"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"><span style="">2.<span style="font:7.0pt "Times New Roman"">
</span></span></span><span dir="LTR"></span><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D">Create a new “module” that might start by being hosted in neutron or keystone that will allow to manage certificates and will use Barbican
behind the scenes to store them.</span></p>
<p class="MsoListParagraph" style="text-indent:-.25in"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"><span style="">3.<span style="font:7.0pt "Times New Roman"">
</span></span></span><span dir="LTR"></span><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D">Decide on a container structure to use in Babican but implement the way to access and arrange it as a neutron library</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D">Was any decision made on how to proceed?</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D">Regards,</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"> -Sam.</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Calibri","sans-serif"; color:#1F497D"> </span></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt; font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt; font-family:"Tahoma","sans-serif""> Vijay B [mailto:os.vbvs@gmail.com]
<br>
<b>Sent:</b> Wednesday, April 30, 2014 3:24 AM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> [openstack-dev] [Neutron] [LBaaS][VPN] SSL cert implementation for LBaaS and VPN</span></p>
<p class="MsoNormal"> </p>
<div>
<p class="MsoNormal">Hi,</p>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">It looks like there are areas of common effort in multiple efforts that are proceeding in parallel to implement SSL for LBaaS as well as VPN SSL in neutron.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">Two relevant efforts are listed below:</p>
</div>
<div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal"><a href="https://review.openstack.org/#/c/74031/" target="_blank">https://review.openstack.org/#/c/74031/</a> (<a href="https://wiki.openstack.org/wiki/Neutron/LBaaS/SSL" target="_blank">https://wiki.openstack.org/wiki/Neutron/LBaaS/SSL</a>)</p>
</div>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal"><a href="https://review.openstack.org/#/c/58897/" target="_blank">https://review.openstack.org/#/c/58897/</a> (<a href="https://blueprints.launchpad.net/openstack/?searchtext=neutron-ssl-vpn" target="_blank">https://blueprints.launchpad.net/openstack/?searchtext=neutron-ssl-vpn</a>)</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">Both VPN and LBaaS will use SSL certificates and keys, and this makes it better to implement SSL entities as first class citizens in the OS world. So, three points need to be discussed here:</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">1. The VPN SSL implementation above is putting the SSL cert content in a mapping table, instead of maintaining certs separately and referencing them using IDs. The LBaaS implementation stores certificates in a separate table, but implements
the necessary extensions and logic under LBaaS. We propose that both these implementations move away from this and refer to SSL entities using IDs, and that the SSL entities themselves are implemented as their own resources, serviced either by a core plugin
or a new SSL plugin (assuming neutron; please also see point 3 below).</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">2. The actual data store where the certs and keys are stored should be configurable at least globally, such that the SSL plugin code will singularly refer to that store alone when working with the SSL entities. The data store candidates
currently are Barbican and a sql db. Each should have a separate backend driver, along with the required config values. If further evaluation of Barbican shows that it fits all SSL needs, we should make it a priority over a sqldb driver.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">3. Where should the primary entries for the SSL entities be stored? While the actual certs themselves will reside on Barbican or SQLdb, the entities themselves are currently being implemented in Neutron since they are being used/referenced
there. However, we feel that implementing them in keystone would be most appropriate. We could also follow a federated model where a subset of keys can reside on another service such as Neutron. We are fine with starting an initial implementation in neutron,
in a modular manner, and move it later to keystone.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">Please provide your inputs on this.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">Thanks,</p>
</div>
<div>
<p class="MsoNormal">Regards,</p>
</div>
<div>
<p class="MsoNormal">Vijay</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>