<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 23, 2014 at 9:59 PM, Tom Fifield <span dir="ltr"><<a href="mailto:tom@openstack.org" target="_blank">tom@openstack.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">This should be added to the ops guide</blockquote><div><br>

</div><div>Bug logged:</div><div><a href="https://bugs.launchpad.net/openstack-manuals/+bug/1333503">https://bugs.launchpad.net/openstack-manuals/+bug/1333503</a><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div><div class="h5"><br>
<br>
<br>
-------- Original Message --------<br>
Subject: Re: [Openstack] Renewing keystone signing certs<br>
Date: Tue, 24 Jun 2014 09:37:44 +1000<br>
From: Sam Morrison <<a href="mailto:sorrison@gmail.com" target="_blank">sorrison@gmail.com</a>><br>
To: Adam Young <<a href="mailto:ayoung@redhat.com" target="_blank">ayoung@redhat.com</a>><br>
CC: <a href="mailto:openstack@lists.openstack.org" target="_blank">openstack@lists.openstack.org</a><br>
<br>
Hi Adam,<br>
<br>
Thanks for the advice, I’ve tested it out and it is possible to switch over pretty seamlessly.<br>
<br>
Here is what I did (spelt out in full for others reading):<br>
<br>
1. Generate a new signing key<br>
2. Generate a new certificate request<br>
3. Sign this with the existing CA to generate a new signing_cert.<br>
4. Append the new signing cert to the old signing cert. Make sure the old cert is first in the file.<br>
5. Remove all signing certs from all your hosts to force nova etc to download the new signing_cert(s)<br>
6. Replace the signing key with the new signing key AND at the same time flip the signing_cert file so the new signing cert is now first in the file.<br>
<br>
After the old cert has expired you can safely remove the old signing cert from the file.<br>
<br>
It would be great if keystoneclient could have a max_age on the signing_cert so it would periodically download a fresh one. I would think if it downloaded a new one every 7 days or so would suffice.<br>
<br>
Cheers,<br>
Sam<br>
<br>
<br>
On 24 Jun 2014, at 6:23 am, Adam Young <<a href="mailto:ayoung@redhat.com" target="_blank">ayoung@redhat.com</a>> wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
On 06/23/2014 03:28 PM, Adam Young wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
On 06/23/2014 02:38 AM, Sam Morrison wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
OK this is looking really scary, (unless I’m missing something…..)<br>
<br>
In havana and icehouse, services will only download the signing cert if it doesn’t exist. So if you replace it on the keystone server it will continue to use the existing cert.<br>
<br>
Ideally you should be able to push out both the current and the new signing cert to all hosts. Then replace the signing cert in keystone that way old and new tokens will work with no downtime<br>
<br>
I’m starting to think with the current way keystone does this it’s going to mean a cloud wide outage to replace the signing certs?<br>
</blockquote>
<br>
It might be possible to work around this.<br>
<br>
I have not tested yet, but it might be possible to deploy a file with both the old an new certs in it to verify the tokens.<br>
<br>
It would be fairly manual, but the process should be something like this:<br>
<br>
1.  Generate a new certificate key and certificate on the keystone machine, but not overwriting the existing /etc/keystone/ssl directory<br>
2.  Append the new certificate to the old certificate<br>
3.  Replace the certificates in the remote services (one at a time) with the "dual certificate" file and   confirm that everything still works.<br>
4.  Replace the key and signing file in the Keystone server with the new one<br>
<br>
I'll run a quick test to see if the dual cert thing works<br>
</blockquote>
<br>
It looks like it works OK.  I did the following:<br>
<br>
cd /opt/stack/python-<u></u>keystoneclient/examples/pki/<u></u>certs<br>
<br>
cat ssl_cert.pem >> signing_cert.pem<br>
<br>
(edited the file by hand to put a space between the two certs...for legibility if nothing else)<br>
<br>
cd ..<br>
<br>
python ./gen_cmsz.py<br>
<br>
<br>
Now while this does throw an error, it has nothing to do with the cert file (same thing happens withou the cert change)  and it has already verified at least one token file before it errors out.<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
<br>
<br>
On 23 Jun 2014, at 3:28 pm, Sam Morrison <<a href="mailto:sorrison@gmail.com" target="_blank">sorrison@gmail.com</a>> wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Our signing certificate is due to expire in a couple of weeks.<br>
<br>
I’m trying to figure out the best way to replace it with a new one.<br>
<br>
I have the new one signed by the same CA but I’m a little unsure of the workflow to replace it. If I swap out the old and new ones will old tokens no longer be valid?<br>
<br>
Anyone else done this and have thoughts?<br>
<br>
Cheers,<br>
Sam<br>
<br>
<br>
</blockquote>
<br>
______________________________<u></u>_________________<br>
Mailing list: <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack</a><br>
Post to     : <a href="mailto:openstack@lists.openstack.org" target="_blank">openstack@lists.openstack.org</a><br>
Unsubscribe : <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack</a><br>
</blockquote>
<br>
<br>
______________________________<u></u>_________________<br>
Mailing list: <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack</a><br>
Post to     : <a href="mailto:openstack@lists.openstack.org" target="_blank">openstack@lists.openstack.org</a><br>
Unsubscribe : <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack</a><br>
</blockquote>
<br>
<br>
______________________________<u></u>_________________<br>
Mailing list: <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack</a><br>
Post to     : <a href="mailto:openstack@lists.openstack.org" target="_blank">openstack@lists.openstack.org</a><br>
Unsubscribe : <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack</a><br>
</blockquote>
<br>
<br>
______________________________<u></u>_________________<br>
Mailing list: <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack</a><br>
Post to     : <a href="mailto:openstack@lists.openstack.org" target="_blank">openstack@lists.openstack.org</a><br>
Unsubscribe : <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack</a><br>
<br>
<br>
<br></div></div>
______________________________<u></u>_________________<br>
Openstack-docs mailing list<br>
<a href="mailto:Openstack-docs@lists.openstack.org" target="_blank">Openstack-docs@lists.<u></u>openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-docs" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-docs</a><br>
</blockquote></div><br></div></div>