<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>my personal rocket science</title>
    <description>Some of the stuff here may be considered as rocket science by most of the people. I don't. I find it just interesting...
</description>
    <link>http://www.mypersonalrocketscience.de/</link>
    <atom:link href="http://www.mypersonalrocketscience.de/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Thu, 23 Feb 2017 07:43:19 +0000</pubDate>
    <lastBuildDate>Thu, 23 Feb 2017 07:43:19 +0000</lastBuildDate>
    <generator>Jekyll v3.3.1</generator>
    
      <item>
        <title>How to preview markdown locally?</title>
        <description>&lt;p&gt;One problem I did experience when working with markdown and github was to preview the markdown, I just produced. I must admit that I’m not too comfortable with markdown syntax. So I fail often at first (and even second and later) edit. Without being able to preview the markdown loacally, this quickly leads to lots of commits, just dealing with minor (and even still faulty) updates e.g. on the README.md file. But there are some different approaches to deal with this. A good list of alternatives is on the &lt;a href=&quot;https://github.com/shime/livedown&quot;&gt; homepage of the Livedown editor plugin&lt;/a&gt;. Go for the “Alternatives” chapter.&lt;/p&gt;

&lt;p&gt;I did decide to use &lt;a href=&quot;https://github.com/joeyespo/grip&quot;&gt;Grip&lt;/a&gt; for the following reasons:
&lt;!--more--&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;editor independent, because being a standalone application, in contrast editor plugins,&lt;/li&gt;
  &lt;li&gt;supporting relative URLs (this means that following links in the hirarchy should work)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So install by&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ pip install grip
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Unfortunately there is no Ubuntu/Debian package &lt;a href=&quot;https://en.wiktionary.org/wiki/AFAIK&quot;&gt;afaik&lt;/a&gt;, so staying up to date is a pain (see &lt;a href=&quot;https://github.com/pypa/pip/issues/59&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;https://github.com/pypa/pip/issues/5://github.com/pypa/pip/issues/3819&quot;&gt;here&lt;/a&gt; ).&lt;/p&gt;

&lt;p&gt;Run by&lt;/p&gt;
&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ cd myrepo
$ grip myfile.md
 * Running on http://localhost:6419/
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;There are lots of other options, so visit &lt;a href=&quot;https://github.com/joeyespo/grip&quot;&gt;Grip Homepage&lt;/a&gt; for mor information.&lt;/p&gt;

</description>
        <pubDate>Sun, 19 Feb 2017 12:17:00 +0000</pubDate>
        <link>http://www.mypersonalrocketscience.de/tipsandtricks/2017/02/19/How-to-preview-markdown-locally.html</link>
        <guid isPermaLink="true">http://www.mypersonalrocketscience.de/tipsandtricks/2017/02/19/How-to-preview-markdown-locally.html</guid>
        
        
        <category>TipsAndTricks</category>
        
      </item>
    
      <item>
        <title>Showing Birthdays from Owncloud Address Book in Mozilla Thunderbird Calendar (Lightning Extension)</title>
        <description>&lt;p&gt;Yesterday I had to set up &lt;a href=&quot;https://www.mozilla.org/de/thunderbird/&quot;&gt;Mozilla Thunderbird&lt;/a&gt;, because I was setting up my new laptop, using &lt;a href=&quot;https://wiki.ubuntu.com/WilyWerewolf/ReleaseNotes&quot;&gt;Ubuntu 10.15 (Wili )&lt;/a&gt;. Besides the usual trade of setting up email accounts, I had to integrate my owncloud calendars and address book. Nothing really fancy but when reviewing the extensions I did notice that the birthdays from the owncloud address book do not show up in the thunderbird calendar. All the solutions provided by thunderbird extensions did not look appealing to me, but google turned up some description of a not so well documented owncloud feature. One more good thing about this feature is that it is not limited to thunderbird, but it’s universal.&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;First for a short reference, I will list up the plugins used:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Calendar: &lt;a href=&quot;https://addons.mozilla.org/de/thunderbird/addon/lightning/&quot;&gt;Thunderbird Lightning extension&lt;/a&gt;. (Download from the extensions manager within thunderbird. Does handle the CalDav synchronisation also.)&lt;/li&gt;
  &lt;li&gt;Address Book:
    &lt;ul&gt;
      &lt;li&gt;For syncing the address book I do use the &lt;a href=&quot;http://www.sogo.nu/downloads/frontends.html&quot;&gt;Inverse SOGo Connector&lt;/a&gt;. (Download from their website and install according to &lt;a href=&quot;http://kb.mozillazine.org/Extensions_%28Thunderbird%29&quot;&gt;this recipe&lt;/a&gt;.)&lt;/li&gt;
      &lt;li&gt;I also do use the &lt;a href=&quot;https://addons.mozilla.org/de/thunderbird/addon/contact-tabs/&quot;&gt;Contact Tabs extension&lt;/a&gt;.  (Maybe only a German language version? Download from the extensions manager within thunderbird.)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now for the real deal: all extensions I did look at (not many and I did not install one of them) did not look appealing to me as they seemed to create these calendar entries on the fly. I do doubt that they do track changes in the address book properly and do clutter your calendar. Anyways some seemed to be dated and people were complaining in the comments (but where don’t they anyways). Also I did get the impression that these extensions might be focused or limited to local calendars. Anyways while googling around a &lt;a href=&quot;https://blog.mehl.mx/2014/birthday-calendar-with-owncloud-via-caldav/&quot;&gt;nice article&lt;/a&gt; in &lt;a href=&quot;https://blog.mehl.mx&quot;&gt;Max’s weblog&lt;/a&gt; did point out that owncloud brings all the good stuff out of the box. You just have to find it:&lt;/p&gt;

&lt;p&gt;There is a CalDav calendar accessible, which contains all the birthdays from your address book. Just import&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;http(s)://YOUR-OC-URL/remote.php/caldav/calendars/YOUR-USER/contact_birthdays&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;into you thunderbird as you did with your regular calendars. I do recommend do mark it as read only. Thank you &lt;a href=&quot;https://blog.mehl.mx&quot;&gt;Max&lt;/a&gt; for pointing out.&lt;/p&gt;

&lt;p&gt;Needless to say, that you can integrate this calendar into any Software that is able to integrate CalDav calendars. So this is the universal solution. Nicely done, ownclod!&lt;/p&gt;

</description>
        <pubDate>Wed, 06 Jan 2016 10:00:00 +0000</pubDate>
        <link>http://www.mypersonalrocketscience.de/mozilla/thunderbird,/owncloud,/lightning,/thunderbird/extensions/2016/01/06/showing-birthdays-from-owncloud-addressbook-in-thunderbird-calendar.html</link>
        <guid isPermaLink="true">http://www.mypersonalrocketscience.de/mozilla/thunderbird,/owncloud,/lightning,/thunderbird/extensions/2016/01/06/showing-birthdays-from-owncloud-addressbook-in-thunderbird-calendar.html</guid>
        
        
        <category>Mozilla</category>
        
        <category>Thunderbird,</category>
        
        <category>Owncloud,</category>
        
        <category>Lightning,</category>
        
        <category>Thunderbird</category>
        
        <category>extensions</category>
        
      </item>
    
      <item>
        <title>First Alpha Version of My Letsencrypt Updater Script Published</title>
        <description>&lt;p&gt;As promised in my &lt;a href=&quot;/letsencrypt,/nginx,/primer/2015/12/05/my-first-review-on-letsencrypt.html&quot;&gt;last post on letsencrypt&lt;/a&gt; I wanted to look into the problem of updating the signatures if you are running a not so standard setup.&lt;/p&gt;

&lt;p&gt;In my case I am running nginx with multiple &lt;a href=&quot;http://httpd.apache.org/docs/2.2/en/vhosts/&quot;&gt;virtual name based hosts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I have finished a alpha version of my idea of an updater script &lt;a href=&quot;https://github.com/myprs/lenc-update&quot;&gt;on the Github project lenc-updater&lt;/a&gt;. No fancy installers or fool proof checks on the environment yet. Have a look and enjoy hacking…&lt;/p&gt;

&lt;h2 id=&quot;links&quot;&gt;Links:&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Project Github Page: &lt;a href=&quot;https://github.com/myprs/lenc-update&quot;&gt;https://github.com/myprs/lenc-update&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Sat, 19 Dec 2015 15:43:50 +0000</pubDate>
        <link>http://www.mypersonalrocketscience.de/letsencrypt,/nginx,/scripting/2015/12/19/my-letsencrypt-updater.html</link>
        <guid isPermaLink="true">http://www.mypersonalrocketscience.de/letsencrypt,/nginx,/scripting/2015/12/19/my-letsencrypt-updater.html</guid>
        
        
        <category>letsencrypt,</category>
        
        <category>nginx,</category>
        
        <category>scripting</category>
        
      </item>
    
      <item>
        <title>A First, Hands On Review Of Letsencrypt With nginx On Ubuntu 14.04 LTS</title>
        <description>&lt;p&gt;There has been lots of announcements and previews of &lt;a href=&quot;https://letsencrypt.org/&quot;&gt;“letsencrypt”&lt;/a&gt;. Now the public beta phase of the project has begun and I want to get my hands dirty to give it a try.&lt;/p&gt;

&lt;p&gt;The concept is appealing to me, but at this point I only do have a rough idea what is coming ahead. What I do understand right now is:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;certificates are for free &lt;a href=&quot;http://www.howtogeek.com/howto/31717/what-do-the-phrases-free-speech-vs.-free-beer-really-mean/&quot;&gt;(“as in beer”)&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;certificates will be accepted by most or all web browsers. (no “untrusted certificate, add exception dialogue” any more, driving your dad away from using your services)&lt;/li&gt;
  &lt;li&gt;certificate renewal can be automatised. At least it can be archived by running a command on the web server.&lt;/li&gt;
  &lt;li&gt;certificate signatures have a maximum validity of 90 days.&lt;/li&gt;
  &lt;li&gt;integration with apache2 is better, nginx is not as mature presently.&lt;/li&gt;
  &lt;li&gt;I think that integration in a web server, running &lt;a href=&quot;http://httpd.apache.org/docs/2.2/en/vhosts/&quot;&gt;multiple named virtual hosts&lt;/a&gt; is not integrated and needs the most manual intervention.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So lets get started. My prerequisites are:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;I an running Ubuntu 14.04 LTS&lt;/li&gt;
  &lt;li&gt;I am using nginx.&lt;/li&gt;
  &lt;li&gt;I am serving &lt;a href=&quot;http://httpd.apache.org/docs/2.2/en/vhosts/&quot;&gt;multiple named virtual hosts&lt;/a&gt; from nginx.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;first-orientation&quot;&gt;First Orientation&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;You don’t need an account for using letsencrypt.
    &lt;ul&gt;
      &lt;li&gt;it is recommended to give an email address which males sense. So I do use an anonymous email address from &lt;a href=&quot;http://www.spammotel.com/&quot;&gt;the anti spam service spammotel.com&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;The sources are available at &lt;a href=&quot;https://github.com/letsencrypt/letsencrypt&quot;&gt;Github&lt;/a&gt;.
    &lt;ul&gt;
      &lt;li&gt;Scroll down the &lt;a href=&quot;https://github.com/letsencrypt/letsencrypt&quot;&gt;Github&lt;/a&gt; page to review the projects README file. This will give you a neat rundown.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;The extensive documentation is available at &lt;a href=&quot;https://letsencrypt.readthedocs.org/en/latest/index.html&quot;&gt;“readthedocs” website&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;installing&quot;&gt;Installing&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;If the client is not available from you distributions package management (as it isn’t in my Ubuntu version), you need to git clone the github repository.&lt;/li&gt;
  &lt;li&gt;If you don’t have git installed, on Ubuntu run apt-get install git-core (running apt-get update beforehand is recommended).&lt;/li&gt;
  &lt;li&gt;If you have cloned the github repo, enter the new directory and run ./letsencrypt-auto –help. On the first run this will install all required packages for the client from your distributions package management.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Done!&lt;/p&gt;

&lt;p&gt;On successive runs this also will pull in updates of these packages if needed. Anyway, you are able to keep letsencrypt up to date by:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;pulling git hub, which will probably be done by running &lt;code class=&quot;highlighter-rouge&quot;&gt;./letsencrypt-auto ...&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;running &lt;code class=&quot;highlighter-rouge&quot;&gt;letsencrypt-auto&lt;/code&gt; (which you will anyway at a maximum 90 days cycle to renew your certificate), this will:
    &lt;ul&gt;
      &lt;li&gt;checking the github repo&lt;/li&gt;
      &lt;li&gt;and pulling in the updates from your distros package management, which you also will do on a frequent basis, anyway.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So chances to stay up to date are pretty good, which is a good idea when you are dealing with crypto.&lt;/p&gt;

&lt;h3 id=&quot;installing-reallity-check&quot;&gt;Installing: Reallity Check&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;I already had git installed (of course ;-) )&lt;/li&gt;
  &lt;li&gt;git clone was a breeze as always&lt;/li&gt;
  &lt;li&gt;did get the “InsecurePlatformWarning” during first run, (see next chapter)&lt;/li&gt;
  &lt;li&gt;Rerun was the same, but OK.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;insecure-platform-warning&quot;&gt;Insecure Platform Warning&lt;/h4&gt;

&lt;p&gt;The first run of ./letsenvrypt-auto –help gives me&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Updating letsencrypt and virtual environment dependencies…../root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/&lt;em&gt;vendor/requests/packages/urllib3/util/ssl&lt;/em&gt;.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.&lt;/p&gt;

  &lt;p&gt;InsecurePlatformWarning&lt;/p&gt;

  &lt;p&gt;./root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/&lt;em&gt;vendor/requests/packages/urllib3/util/ssl&lt;/em&gt;.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.&lt;/p&gt;

  &lt;p&gt;InsecurePlatformWarning&lt;/p&gt;

  &lt;p&gt;Command “/root/.local/share/letsencrypt/bin/python2.7 -c “import setuptools, tokenize;&lt;strong&gt;file&lt;/strong&gt;=’/tmp/pip-build-xuiQq1/cryptography/setup.py’;exec(compile(getattr(tokenize, ‘open’, open)(&lt;strong&gt;file&lt;/strong&gt;).read().replace(‘\r\n’, ‘\n’), &lt;strong&gt;file&lt;/strong&gt;, ‘exec’))” install –record /tmp/pip-LbqOu0-record/install-record.txt –single-version-externally-managed –compile –install-headers /root/.local/share/letsencrypt/include/site/python2.7/cryptography” failed with error code 1 in /tmp/pip-build-xuiQq1/cryptography&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After having read&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning&quot;&gt;The link from the error message&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/letsencrypt/letsencrypt/issues/1362&quot;&gt;The issue entry #1362 from the projects Github bug tracker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I decided to just ignore it. There are some hints that my version of python may not support &lt;a href=&quot;https://en.wikipedia.org/wiki/Server_Name_Indication&quot;&gt;server name indication (SNI)&lt;/a&gt;, which might relevant for my &lt;a href=&quot;http://httpd.apache.org/docs/2.2/en/vhosts/&quot;&gt;name based virtual hosting set-up&lt;/a&gt;. But we’ll see.&lt;/p&gt;

&lt;p&gt;The next run I did get the same, but that’s OK for now.&lt;/p&gt;

&lt;h2 id=&quot;generating-the-first-certificate&quot;&gt;Generating the First Certificate&lt;/h2&gt;

&lt;p&gt;Two things keep me from using the fully integrated approach:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;using nginx (there is no working nginx plug-in)&lt;/li&gt;
  &lt;li&gt;hosting multiple sites on one instance (aka &lt;a href=&quot;http://httpd.apache.org/docs/2.2/en/vhosts/&quot;&gt;name based virtual hosting set-up&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I give it a first go with:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;using the &lt;a href=&quot;https://letsencrypt.readthedocs.org/en/latest/using.html#webroot&quot;&gt;webroot plugin&lt;/a&gt;, which I assume is the right choice for future automation on name based virtual hosts.&lt;/li&gt;
  &lt;li&gt;creating a config file to minimise interaction.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;config-file&quot;&gt;Config File&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Create &lt;code class=&quot;highlighter-rouge&quot;&gt;/etc/letsencrypt&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;it turned out that this is the default directory which is used by letsencrypt itself to store all necessary data. But we can use this too.&lt;/li&gt;
  &lt;li&gt;Create one letsencrypt config file per certificate (read as per named virtual host in your web server)&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-apacheconf&quot; data-lang=&quot;apacheconf&quot;&gt;# This is an example of the kind of things you can do in a configuration file.
# All flags used by the client can be configured here. Run Let's Encrypt with
# &quot;--help&quot; to learn more about the available options.

# Use a 4096 bit RSA key instead of 2048
rsa-key-size = 4096

# Always use the staging/testing server
# Don't use it for production as it will give you a not trusted CA called &quot;happy hacker fake CA&quot;
# So I did comment it out.
#server = https://acme-staging.api.letsencrypt.org/directory

# Uncomment and update to register with the specified e-mail address
# email = foo@example.com

# Uncomment to use a text interface instead of ncurses
text = True

# Uncomment to use the standalone authenticator on port 443
# authenticator = standalone
# standalone-supported-challenges = tls-sni-01

# Uncomment to use the webroot authenticator. Replace webroot-path with the
# path to the public_html / webroot folder being served by your web server.
authenticator = webroot
webroot-path = /var/www/myexample/

domain my.example.de
email XXXXXXXXXXXXXXX@spammotel.com&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Now running &lt;code class=&quot;highlighter-rouge&quot;&gt;./letsencrypt-auto -c /etc/letsencrypt/my.example.de certonly&lt;/code&gt; will get you a certificate. In the first run you have to nod at the license agreement manually.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;root@example:~/install/letsencrypt/bin/letsencrypt# ./letsencrypt-auto -c /etc/letsencrypt/my.example.de certonly
Updating letsencrypt and virtual environment dependencies…….
Running with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt -c /etc/letsencrypt/my.example.de certonly&lt;/p&gt;

  &lt;hr /&gt;
  &lt;p&gt;Please read the Terms of Service at https://letsencrypt.org/documents/LE-
SA-v1.0.1-July-27-2015.pdf. You must agree in order to register with the ACME
server at https://acme-v01.api.letsencrypt.org/directory
——————————————————————————-
(A)gree/(C)ancel: A
IMPORTANT NOTES:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;If you lose your account credentials, you can recover through
e-mails sent to XXXXXXXXX@spammotel.com.&lt;/li&gt;
    &lt;li&gt;Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/my.example.de/fullchain.pem. Your
cert will expire on 2016-03-04. To obtain a new version of the
certificate in the future, simply run Let’s Encrypt again.&lt;/li&gt;
    &lt;li&gt;Your account credentials have been saved in your Let’s Encrypt
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Let’s
Encrypt so making regular backups of this folder is ideal.&lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;If like Let’s Encrypt, please consider supporting our work by:&lt;/p&gt;

      &lt;p&gt;Donating to ISRG / Let’s Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;root@example:~/install/letsencrypt/bin/letsencrypt#&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This did get you all the cryptographic material you need in the directory &lt;code class=&quot;highlighter-rouge&quot;&gt;/etc/letsencrypt/lice/$DOMAINNAME&lt;/code&gt; (here e.g. &lt;code class=&quot;highlighter-rouge&quot;&gt;/etc/letsencrypt/live/my.example.com&lt;/code&gt;).&lt;/p&gt;

&lt;h2 id=&quot;integrating-the-certificates-into-the-web-server&quot;&gt;Integrating the Certificates into the Web Server&lt;/h2&gt;

&lt;p&gt;This part is fairly easy, if done right (as allways ;-) ).&lt;/p&gt;

&lt;p&gt;Just replace the old paths pointing to your former certificates in the “server” section of your nginx configuration to the certificates in &lt;code class=&quot;highlighter-rouge&quot;&gt;/etc/letsencrypt/live/my.example.com&lt;/code&gt; :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;point the “ssl_certificate_key” entry to  &lt;code class=&quot;highlighter-rouge&quot;&gt;/etc/letsencrypt/live/my.example.de/privkey.pem&lt;/code&gt;:&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;ssl_certificate_key /etc/letsencrypt/live/my.example.de/privkey.pem;&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;point the “ssl_certificate” entry to the fullchain &lt;code class=&quot;highlighter-rouge&quot;&gt;/etc/letsencrypt/live/my.example.de/fullchain.pem&lt;/code&gt;:&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;ssl_certificate /etc/letsencrypt/live/my.example.de/fullchain.pem;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please make sure to use the “fullchain.pem” file for nginx, as there is no means of providing the certificate and the CA chain separately (see &lt;a href=&quot;http://nginx.org/en/docs/http/configuring_https_servers.html#chains&quot;&gt;NGINX Documentation on CA Chains&lt;/a&gt;). But letsencrypt provides you with all the necessary files from the start.&lt;/p&gt;

&lt;p&gt;Unfortunately nginx requires a restart to use the new certificates. After doing so  you should be able to browse your website using a publicly trusted certificate.&lt;/p&gt;

&lt;p&gt;If you are wondering what operating systems and browsers do trust the CA, &lt;a href=&quot;https://community.letsencrypt.org/t/which-browsers-and-operating-systems-support-lets-encrypt/4394&quot;&gt;read this post&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;testing-the-security-of-your-setup&quot;&gt;Testing the Security of Your Setup&lt;/h2&gt;

&lt;p&gt;Now that you successfully have deployed you ssl certificate, you might tend to think you’re done and safe. But as we’re talking security, having ssl encryption running is one thing of many. The really important part is to make sure the configuration details are right and e.g. do not offer any protocols or ciphers to the client, which are insecure. As this is a topic where some clever guys write their master thesis on, we cannot go into such depths for an every day setup.&lt;/p&gt;

&lt;p&gt;My solution for the general housekeeping is to have my ssl enabled web sites checked by some free (&lt;a href=&quot;http://www.howtogeek.com/howto/31717/what-do-the-phrases-free-speech-vs.-free-beer-really-mean/&quot;&gt;as in beer&lt;/a&gt;) services, which will the give me advice where my setup is insecure. My favourite service is &lt;a href=&quot;https://www.ssllabs.com/ssltest/analyze.html&quot;&gt;Qualys SSL Labs’ SSL Server Test&lt;/a&gt;. Please be aware that this service, as you use it, will contact your web server and send requests to it.&lt;/p&gt;

&lt;p&gt;The result of the scan is very detailed and in case of any flaws found, they will provide you with advice for the most common web servers on how to fix it.&lt;/p&gt;

&lt;p&gt;Do these checks on a regular basis as the situation on security can change daily!&lt;/p&gt;

&lt;h2 id=&quot;renewal-of-the-certificate&quot;&gt;Renewal of the Certificate&lt;/h2&gt;

&lt;p&gt;You must be aware that the signatures of the certificates have a relatively short lifetime of 90 days. Before the signatures expire, you must renew the certificate. Otherwise your users will be presented with warnings (at best) or denied access to your services. But before you start complaining about the short lifetime, there are &lt;a href=&quot;https://letsencrypt.org/2015/11/09/why-90-days.html&quot;&gt;some good points to do so&lt;/a&gt;. As renewal can be automated, this should not be an issue at all. But, if put to the reality test, it is not as easy as it seems at first glance.&lt;/p&gt;

&lt;h3 id=&quot;the-simple-version&quot;&gt;The Simple Version&lt;/h3&gt;
&lt;p&gt;The simple version (from the documentation) is:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;with the setup above setup, run &lt;code class=&quot;highlighter-rouge&quot;&gt;./letsencrypt-auto -c /etc/letsencrypt/my.example.de certonly&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;but this will give you some interactive chat:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Do you want to renew and replace this certificate with a newly-issued one?
-------------------------------------------------------------------------------
(R)eplace/(C)ancel:
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The solution to this is to add the lines&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-apacheconf&quot; data-lang=&quot;apacheconf&quot;&gt;# make renewal noninteractive
renew-by-default&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This will enable you to create a file &lt;code class=&quot;highlighter-rouge&quot;&gt;/etc/cron.d/letsencrypt-renew-my.example.de&lt;/code&gt;&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-apacheconf&quot; data-lang=&quot;apacheconf&quot;&gt;# m h dom mon dow user  command
22 03 3 */2 *       letsencrypt-auto -c /etc/letsencrypt/my.example.de certonly; service nginx stop; service nginx start&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This will (at least under recent Ubuntu distributions) renew the certificate every two months in the middle of the night of day three.&lt;/p&gt;

&lt;h3 id=&quot;the-real-world-version&quot;&gt;The real world version&lt;/h3&gt;

&lt;p&gt;The simple version might be appealing but it has no safeguard against any failures at any point.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The cron job might not run without being detected (e.g. the server was down at the time)&lt;/li&gt;
  &lt;li&gt;The certificate rewewal might fail due to
    &lt;ul&gt;
      &lt;li&gt;failure of letsencrypt-auto to upgrade your distribution&lt;/li&gt;
      &lt;li&gt;failure of letsencrypt-auto to pull from github&lt;/li&gt;
      &lt;li&gt;failure of letsencrypt-auto to contact its servers&lt;/li&gt;
      &lt;li&gt;failure of letsencrypt-auto to obtain or save the new certificates&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;enginx might fail to shut down or start&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I do feel not comfortable to just let it run this way. There are some posts on the net with solutions, but I think I may bake my own.&lt;/p&gt;

&lt;p&gt;For the time being you might want to look at:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://eblog.damia.net/2015/12/03/lets-encrypt-automation-on-debian/&quot;&gt;a script that is more how think it should be&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://community.letsencrypt.org/t/how-to-automatically-renew-certificates/4393/2&quot;&gt;community post at letsencrypt website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h1&gt;

&lt;p&gt;“letsencrypt” takes some effort to set it up at present, mainly due to the lack of user friendy documentation. At present you have to goolge lots of the details you need to get it doing its job reliably in the long term. But even today it is taking away a lot of the struggles you have to go through to obtain a publicly accepted SSL certificate. But the idea is totally right. And taking the cost factor away from the “basic” ssl cerificate to give the user the choice of communicating privately is the right direction. This will be not the favorite of the commercial CA’s but the have the [Extended Validation Certificates][https://en.wikipedia.org/wiki/Extended_Validation_Certificate] to maintain their business model and their commercial existence.&lt;/p&gt;

&lt;p&gt;It will not solve some of the basic criticism PKI structures are taking, like having to trust the CA. But this is not the topic at this level.&lt;/p&gt;

&lt;p&gt;If the underlying protocols ar well crafted and the infrastucture is run appropriatly, letsencrypt has a large potential. In case it’s not, we’ll read about that on the news in the future, for sure.&lt;/p&gt;

&lt;p&gt;With a growing set of documentation, there is the potential to give SSL the push, especially for the small setups, that will make encrypted communication on the internet the normal case.&lt;/p&gt;

</description>
        <pubDate>Sat, 05 Dec 2015 15:48:10 +0000</pubDate>
        <link>http://www.mypersonalrocketscience.de/letsencrypt,/nginx,/primer/2015/12/05/my-first-review-on-letsencrypt.html</link>
        <guid isPermaLink="true">http://www.mypersonalrocketscience.de/letsencrypt,/nginx,/primer/2015/12/05/my-first-review-on-letsencrypt.html</guid>
        
        
        <category>letsencrypt,</category>
        
        <category>nginx,</category>
        
        <category>primer</category>
        
      </item>
    
      <item>
        <title>Welcome to my site!</title>
        <description>&lt;p&gt;Welcome. I am amazed to announce the launch of my website.&lt;/p&gt;

&lt;p&gt;Over time I always felt the urge to share things I figure out during my geek life. I always felt uncomfortable to just fire up google, every time I had some issues to resolve and just consuming the work of others. This is the start for me to be able to share. I hope to produce some content that will be of some use to others.  &lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;When it came to setting up a website I always was hesitant to have all this stuff running: web server, database, some language like php, virtual server or buying some web hosting packages and having to decide what system to run on. For most of the common, recommended CMS you can see the articles on security issues and warnings to update and install patches popping up on a regular basis. I didn’t feel that this whole effort was worth it, just to run a little blog.&lt;/p&gt;

&lt;p&gt;Now I am really excited that I did find a setup which suits my needs. &lt;a href=&quot;http://jekyllrb.com&quot;&gt;Jekyll&lt;/a&gt; is an “offline CMS” which can be installed on my local machine. It’s plain textfile and you write &lt;a href=&quot;https://de.wikipedia.org/wiki/Markdown&quot;&gt;markdown&lt;/a&gt; or some other &lt;a href=&quot;https://en.wikipedia.org/wiki/Markup_language&quot;&gt;markup&lt;/a&gt;, which will be converted to html. To me as a longtime wiki author, this was what I wanted. And no Database needed! Great! You add new content by creating a new file at the right place and fill it with simple markup. That’s it.&lt;/p&gt;

&lt;p&gt;Next advantage: As this is plain text, you can version your site in &lt;a href=&quot;https://en.wikipedia.org/wiki/Git_%28software%29&quot;&gt;git&lt;/a&gt;. As git is an &lt;a href=&quot;https://en.wikipedia.org/wiki/Distributed_Concurrent_Versions_System&quot;&gt;distributed-cvs&lt;/a&gt; you can easily distribute copies and use them as backups, including you version history in a efficient manner. Super handy!&lt;/p&gt;

&lt;p&gt;Last but not least I did figure out that if I use &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; as the place to host my repository, it integrates well with &lt;a href=&quot;http://jekyllrb.com&quot;&gt;jekyll&lt;/a&gt; and I can host my site on &lt;a href=&quot;https://pages.github.com/&quot;&gt;GitHub Pages&lt;/a&gt; easily. This will give me the advantages of being hosted on a big site, using a CDN.&lt;/p&gt;

&lt;p&gt;And here we are! What else should I ask for. I am super happy!&lt;/p&gt;

</description>
        <pubDate>Sun, 22 Nov 2015 17:08:54 +0000</pubDate>
        <link>http://www.mypersonalrocketscience.de/general,/selfreference/2015/11/22/welcome-to-jekyll.html</link>
        <guid isPermaLink="true">http://www.mypersonalrocketscience.de/general,/selfreference/2015/11/22/welcome-to-jekyll.html</guid>
        
        
        <category>general,</category>
        
        <category>selfreference</category>
        
      </item>
    
  </channel>
</rss>
