<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>benjamin erhart &#187; Debian</title>
	<atom:link href="http://benjaminerhart.com/tag/debian/feed/" rel="self" type="application/rss+xml" />
	<link>http://benjaminerhart.com</link>
	<description>web &#38; mobile dev / it sec</description>
	<lastBuildDate>Wed, 01 Feb 2012 15:41:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>git push auf HTTPS Server mit CAcert/self-signed Zertifikat (don&#8217;t do it!)</title>
		<link>http://benjaminerhart.com/2010/05/git-push-auf-https/</link>
		<comments>http://benjaminerhart.com/2010/05/git-push-auf-https/#comments</comments>
		<pubDate>Mon, 17 May 2010 22:06:47 +0000</pubDate>
		<dc:creator>tla</dc:creator>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[cacert]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git server]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[webdav]]></category>

		<guid isPermaLink="false">http://benjaminerhart.com/?p=420</guid>
		<description><![CDATA[Gestern hats mal wieder länger gedauert als gedacht, wie das immer so ist, wenn man neue Software enrichtet...

Bis jetzt hatte ich mein Git Repository auf meinem Server über SSH genutzt. Da ich das aber irgendwann teilen will, und wenig Lust auf den Streß mit den Dateiberechtigungen habe, muß eine andere Lösung her.

Auf meinem Apache ...]]></description>
			<content:encoded><![CDATA[<p>Gestern hats mal wieder länger gedauert als gedacht, wie das immer so ist, wenn man neue Software enrichtet&#8230;</p>
<p>Bis jetzt hatte ich mein Git Repository auf meinem Server über SSH genutzt. Da ich das aber irgendwann teilen will, und wenig Lust auf den Streß mit den Dateiberechtigungen habe, muß eine andere Lösung her.<br />
<span id="more-420"></span><br />
Auf meinem Apache ist schon <a href="http://httpd.apache.org/docs/2.2/mod/mod_dav.html">WebDAV</a> eingerichtet, ein Subversion Repository gibts auch schon darüber. Es liegt also nahe, Git auch über den Apachen zu machen.</p>
<p>Das geht auch, und es gibt eine sehr gute Anleitung dazu, wie man den Server einrichtet auf <a href="http://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt">kernel.org</a> die ich hier nicht wiederholen werde.</p>
<p>Eine kleine Ergänzung gibts allerdings: Nach dem Anlegen eines neuen bare Repositories wird man mit hoher Wahrscheinlichkeit noch<br />
<code><br />
$ git update-server-info<br />
</code><br />
ausführen müssen.</p>
<p>Wenn man sein Repository nur über HTTPS ansprechen will, gibts auf Client Seite, insbesondere wenn der Client ein MacOS X ist,  noch eine Dinge, die man beachten muß, damits dann auch wirklich funktioniert.</p>
<p>Ich hatte einige Mühe, alle Puzzleteile zusammenzusammeln, deswegen hier eine Anleitung für die Nachwelt.</p>
<p>git push verwendet für HTTP(S) <a href="http://de.wikipedia.org/wiki/CURL">libcurl</a> zur Kommunikation.<br />
libcurl muß, um richtig zu funktionieren, die SSL Zertifikatskette verifizieren können.</p>
<p>Ich verwende <a href="http://www.cacert.org/">CAcert</a> für alle meine privaten Zertifikate. Die sind leider immer noch nicht anerkannt bei den großen Browserherstellern, aber das ist trotzdem praktischer als self-signed. Das Vorgehen in diesem Fall mit selbsterstellter CA bleibt aber das gleiche.</p>
<p><del datetime="2010-05-18T21:45:29+00:00">Der richtige Platz für CA Zertifikate ist unter MacOS in <code>/System/Library/OpenSSL/certs/</code>.</del></p>
<p>Der richtige Platz fü CA Zertifikate ist unter MacOS, wenn man <a href="http://www.macports.org/">MacPorts</a> benutzt (was ich nur jedem ans Herz legen kann) unter <code>/opt/local/etc/openssl/certs</code> (Siehe Update unten)</p>
<p>Unter Debian (&amp; Derivaten) wäre es <code>/etc/ssl/certs/</code>.</p>
<p>Dorthin die CAcert Class 1 und 3 Root Zertifikate kopieren (bzw. die self-signed Zertifikate).</p>
<p>Damit die Zertifikate nun zugeordnet werden können, müssen sie nach ihren Hashes benannt werden &#8211; oder besser &#8211; Symlinks mit solchen Namen erzeugt werden, die auf die richtige Cert-Datei zeigen.</p>
<p>Unter Debian führt man nun einfach<br />
<code><br />
# c_rehash<br />
</code><br />
aus, welches genau dieses für einen macht. Unter MacOS 10.6.3 bleibt dieser Befehl leider wirkungslos, selbst wenn man den in der <a href="http://de.wikipedia.org/wiki/Shebang">Shebang</a> Zeile des Scripts geforderten Symlink <code>#!/usr/bin/perl5</code> anlegt.</p>
<p>Wegen zwei Dateien werden wir nicht lange herumtun&#8230; Wir gehen einfach zu Fuß:</p>
<p>In Zeile 104 von <code>/usr/bin/c_rehash</code> findet sich der Befehl, der benötigt wird:<br />
<code><br />
# openssl x509 -hash -fingerprint -noout -in [filename]<br />
</code><br />
In der ersten Zeile der Ausgabe steht der Hash des Zertifikats. Für das Class 1 Root Zertifikat von CAcert ist das z.B. <code>5ed36f99</code>.</p>
<p>Dann einen Symlink anlegen mit dem Hash gefolgt von <code>.0</code>:<br />
<code><br />
# ln -s root.crt 5ed36f99.0<br />
</code><br />
Analog mit allen weiteren Zertifikaten.</p>
<p>Jetzt noch git beibringen, libcurl richtig zu parametrieren, am besten gleich systemweit:<br />
<code><br />
<del datetime="2010-05-18T21:45:29+00:00"># git config --system http.sslcapath /System/Library/OpenSSL/certs/</del><br />
# git config --system http.sslcapath /opt/local/etc/openssl/certs/<br />
</code><br />
(Siehe <a href="http://www.kernel.org/pub/software/scm/git/docs/git-config.html">git-config Manual auf kernel.org</a>)</p>
<p>Und jetzt sollte ein<br />
<code><br />
$ git push origin master<br />
</code></p>
<p>auch funktionieren&#8230;</p>
<h3>Update</h3>
<p>Ich mußte feststellen, daß MacOS alle angelegten Symlinks in <code>/System/Library/OpenSSL/certs/</code> beim Systemstart löscht. Daher die Zertifikate besser in der OpenSSL Konfiguration von MacPorts ablegen!</p>
<h3>Und noch ein Update</h3>
<p>Nach weiterem Gebastel kann ich inzwischen nur jedem abraten, Git über HTTP zu machen&#8230; Es ist grauenhaft. Abgesehen von dem Zertifikatsgewetze, wie es hier beschrieben ist, ist der <code>post-update</code> Hook einfach nicht zum laufen zu bekommen (siehe <a href="http://progit.org/book/ch4-1.html">Pro Git</a>) &#8211; und ohne den macht der nächste Clone keinen Spaß.</p>
<p>Wenn man ein bißchen mehr Plan von Server Administration hat, kommt man auch gleich drauf, daß man einfach für SSH nur <strong>einen</strong> Git-User anlegt, den alle benutzen. Dann gibts keine Probleme mit den Dateirechten. Alle anderen (so wie ich) <a href="http://progit.org/book/ch4-4.html">lesen es dann bei Pro Git nach, wie das geht.</a></p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://benjaminerhart.com/2010/05/git-push-auf-https/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CouchDB 0.9 auf Debian Lenny</title>
		<link>http://benjaminerhart.com/2009/10/couchdb-0-9-auf-debian-lenny/</link>
		<comments>http://benjaminerhart.com/2009/10/couchdb-0-9-auf-debian-lenny/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 21:15:43 +0000</pubDate>
		<dc:creator>tla</dc:creator>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[CouchDB]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Installationsanleitung]]></category>

		<guid isPermaLink="false">http://benjaminerhart.com/?p=200</guid>
		<description><![CDATA[Debian Lenny hat die CouchDB bereits im Package System, allerdings nur in Version 0.8. Da sich in der 0.9er u.a. die API für die Design Dokumente leicht geändert hat und diese Änderung bereits in die neuesten Wrapper eingeflossen sind (wie z.B. PHPillow, und inzwischen auch die Version 0.10 veröffentlicht wurde, ist es keine gute ...]]></description>
			<content:encoded><![CDATA[<p>Debian Lenny hat die CouchDB bereits im Package System, allerdings nur in Version 0.8. Da sich in der 0.9er u.a. die API für die Design Dokumente leicht geändert hat und diese Änderung bereits in die neuesten Wrapper eingeflossen sind (wie z.B. <a href="http://arbitracker.org/phpillow.html">PHPillow</a>, und inzwischen auch die Version 0.10 veröffentlicht wurde, ist es keine gute Idee mehr, noch auf 0.8 eine neue Entwicklung zu starten.</p>
<p>Aus dem Grund muß wohl selbst Hand angelegt werden.<br />
<span id="more-200"></span><br />
Für eine 0.9er Version hat freundlicherweise schon jemand Vorarbeit geleistet:</p>
<p><a href="http://hostingfu.com/article/building-couchdb-0-9-debian-5">http://hostingfu.com/article/building-couchdb-0-9-debian-5</a></p>
<p>Um das Problem der fehlenden Abhängigkeiten möglichst auf einmal zu erschlagen, installieren wir der Einfachheit halber doch erst einmal die 0.8er Version und löschen sie anschließend gleich wieder:<br />
<code><br />
$ sudo su<br />
# apt-get install couchdb<br />
# apt-get remove couchdb<br />
</code><br />
Wir überprüfen noch einmal, ob das Ding wirklich weg ist, da Erlang (die Programmiersprache, in der CouchDB programmiert ist) ja dafür bekannt ist, extrem stabil zu sein:<br />
<code><br />
# ps aux | grep couch<br />
couchdb   9751  0.0  0.0  11948   304 ?        S    Sep26   0:00 /bin/sh -e /usr/bin/couchdb -c /etc/couchdb/couch.ini -b -r 5 -p /var/run/couchdb.pid -o /dev/null -e /dev/null -R<br />
couchdb   9761  0.0  0.0  11956    88 ?        S    Sep26   0:00 /bin/sh -e /usr/bin/couchdb -c /etc/couchdb/couch.ini -b -r 5 -p /var/run/couchdb.pid -o /dev/null -e /dev/null -R<br />
couchdb   9762  0.1  0.9  70924  3008 ?        Sl   Sep26  11:44 /usr/lib/erlang/erts-5.6.3/bin/beam -Bd -- -root /usr/lib/erlang -progname erl -- -home /var/lib/couchdb -noshell -noinput -smp auto -sasl errlog_type error -pa /usr/lib/couchdb/erlang/lib/couch-0.8.0-incubating/ebin /usr/lib/couchdb/erlang/lib/mochiweb-r76/ebin -eval application:load(inets) -eval application:load(crypto) -eval application:load(couch) -eval crypto:start() -eval inets:start() -eval couch_server:start(), receive done -> done end. -couchini /etc/couchdb/couch.ini -pidfile /var/run/couchdb.pid -heart<br />
couchdb   9767  0.0  0.0   3640   236 ?        Ss   Sep26   0:00 heart -pid 9762 -ht 11<br />
root     23297  0.0  0.2   8376   836 pts/0    R+   22:50   0:00 grep couch<br />
</code><br />
Alle Prozesse löschen mit<br />
<code><br />
kill [Prozess-ID]<br />
</code><br />
Dem 0.9er Packet fehlen dann noch zwei Abhängigkeiten:<br />
<code><br />
# apt-get install libjs-jquery<br />
# apt-get install libcurl3<br />
</code><br />
Jetzt noch das Paket laden und installieren:<br />
<code><br />
# wget http://hostingfu.com/files/couchdb/couchdb_0.9.0-2_amd64.deb<br />
# dpkg -i couchdb_0.9.0-2_amd64.deb<br />
</code><br />
Fertig!</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://benjaminerhart.com/2009/10/couchdb-0-9-auf-debian-lenny/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

