<?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>Dylan Barlett</title> <atom:link href="http://www.dylanbarlett.com/feed/" rel="self" type="application/rss+xml" /><link>http://www.dylanbarlett.com</link> <description></description> <lastBuildDate>Thu, 17 May 2012 03:25:17 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <item><title>Google Analytics on Steroids</title><link>http://www.dylanbarlett.com/2012/05/google-analytics-on-steroids/</link> <comments>http://www.dylanbarlett.com/2012/05/google-analytics-on-steroids/#comments</comments> <pubDate>Thu, 17 May 2012 03:25:17 +0000</pubDate> <dc:creator>Dylan</dc:creator> <category><![CDATA[Software]]></category> <guid
isPermaLink="false">http://www.dylanbarlett.com/?p=234</guid> <description><![CDATA[Google Analytics on Steroids (GAS) is a wrapper around the Google Analytics API that adds several useful events categories. One of the most interesting is YouTube. By default, _gasTrackYoutube fires events for play, pause, finish, and error. You can also &#8230; <a
href="http://www.dylanbarlett.com/2012/05/google-analytics-on-steroids/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><a
title="CardinalPath/gas" href="https://github.com/CardinalPath/gas">Google Analytics on Steroids</a> (GAS) is a wrapper around the Google Analytics API that adds several useful <a
title="Event Tracking Guide" href="https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuide">events</a> categories. One of the most interesting is YouTube. By default, <code>_gasTrackYoutube</code> fires events for play, pause, finish, and error. You can also specify playback percentages. <a
title="YouTube Event Tracking — Gist" href="https://gist.github.com/2715896">This GitHub Gist</a> is a simple page that shows how to set events for 25, 50, and 75% playback (line 14). Thanks to <a
title="eduardocereto (Eduardo Cereto Carvalho)" href="https://github.com/eduardocereto">Eduardo Cereto</a> for helping me get it to work.</p> ]]></content:encoded> <wfw:commentRss>http://www.dylanbarlett.com/2012/05/google-analytics-on-steroids/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Export AD User Details</title><link>http://www.dylanbarlett.com/2012/03/export-ad-user-details/</link> <comments>http://www.dylanbarlett.com/2012/03/export-ad-user-details/#comments</comments> <pubDate>Wed, 14 Mar 2012 14:35:28 +0000</pubDate> <dc:creator>Dylan</dc:creator> <category><![CDATA[Software]]></category> <guid
isPermaLink="false">http://www.dylanbarlett.com/?p=227</guid> <description><![CDATA[To list the name, department, and manager of all users in an Active Directory OU: Full documentation of Dsquery user and Dsget user.]]></description> <content:encoded><![CDATA[<p>To list the name, department, and manager of all users in an Active Directory OU:</p><pre class="brush: plain; title: ; notranslate">dsquery user -limit 200 OU=UserOU,OU=Sales,DC=contoso,DC=com | dsget user -ln -fn -dept -mgr &gt;
users.txt</pre><p>Full documentation of <a
href="http://technet.microsoft.com/en-us/library/cc725702%28v=ws.10%29.aspx" title="Dsquery user documentation">Dsquery user</a> and <a
href="http://technet.microsoft.com/en-us/library/cc732535%28v=ws.10%29.aspx" title="Dsget user documentation">Dsget user</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.dylanbarlett.com/2012/03/export-ad-user-details/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Selective Realtime SQL Monitoring</title><link>http://www.dylanbarlett.com/2012/02/selective-realtime-sql-monitoring/</link> <comments>http://www.dylanbarlett.com/2012/02/selective-realtime-sql-monitoring/#comments</comments> <pubDate>Fri, 03 Feb 2012 19:10:34 +0000</pubDate> <dc:creator>Dylan</dc:creator> <category><![CDATA[Software]]></category> <guid
isPermaLink="false">http://www.dylanbarlett.com/?p=225</guid> <description><![CDATA[While investigating unusual WordPress behavior, I needed a way to log all queries to a file for detailed analysis, but stream a subset to the console. This wp-config parameter and snippet in functions.php (from Bob Sherron) logs all queries to &#8230; <a
href="http://www.dylanbarlett.com/2012/02/selective-realtime-sql-monitoring/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>While investigating unusual WordPress behavior, I needed a way to log all queries to a file for detailed analysis, but stream a subset to the console.</p><p>This wp-config parameter</p><pre class="brush: php; title: ; notranslate">define('SAVEQUERIES', true);</pre><p>and snippet in functions.php (from <a
href="http://www.bsdeluxe.com/rails-like-sql-query-logging-in-wordpress/">Bob Sherron</a>)</p><pre class="brush: php; title: ; notranslate">
// outputs SQL queries to a log
add_action('shutdown', 'sql_logger');
function sql_logger() {
    global $wpdb;
    $log_file = fopen(ABSPATH.'/sql_log.txt', 'a');
    fwrite($log_file, &quot;//////////////////////////////////////////\n\n&quot; . date(&quot;F j, Y, g:i:s a&quot;).&quot;\n&quot;);
    foreach($wpdb-&gt;queries as $q) {
        fwrite($log_file, $q[0] . &quot; - ($q[1] s)&quot; . &quot;\n\n&quot;);
    }
    fclose($log_file);
}
</pre><p>logs all queries to sql_log.txt. On the server, I can then run</p><pre class="brush: bash; title: ; notranslate">tail -f sql_log.txt | grep &quot;WHERE \`option_name\` = 'sidebars_widgets'&quot; | tee sidebars_widgets.txt</pre><p>Note the backticks around option_name and single quotes around sidebars_widgets.</p><p>Breakdown of the individual commands:</p><pre class="brush: bash; title: ; notranslate">tail -f sql_log.txt</pre><p> Stream the end of sql_log.txt to stdout, as it&#8217;s updated</p><pre class="brush: bash; title: ; notranslate">grep &quot;WHERE \`option_name\` = 'sidebars_widgets'&quot;</pre><p> Filter only queries that update the row I&#8217;m interested in</p><pre class="brush: bash; title: ; notranslate">tee sidebars_widgets.txt</pre><p> Display the filtered lines on the console and write to sidebars_widgets.txt for later review</p> ]]></content:encoded> <wfw:commentRss>http://www.dylanbarlett.com/2012/02/selective-realtime-sql-monitoring/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Capital Bikeshare Trip History Data</title><link>http://www.dylanbarlett.com/2012/01/capital-bikeshare-trip-history-data/</link> <comments>http://www.dylanbarlett.com/2012/01/capital-bikeshare-trip-history-data/#comments</comments> <pubDate>Wed, 11 Jan 2012 02:55:27 +0000</pubDate> <dc:creator>Dylan</dc:creator> <category><![CDATA[Software]]></category> <guid
isPermaLink="false">http://www.dylanbarlett.com/?p=224</guid> <description><![CDATA[Capital Bikeshare just posted quarterly Trip History Data. I&#8217;ve imported the files into Google Fusion Tables: 2011-4th-quarter 2011-3rd-quarter 2011-2nd-quarter 2011-1st-quarter 2010-4th-quarter]]></description> <content:encoded><![CDATA[<p><a
href="http://capitalbikeshare.com">Capital Bikeshare</a> just posted quarterly <a
href="http://capitalbikeshare.com/trip_history_data">Trip History Data</a>. I&#8217;ve imported the files into <a
href="http://www.google.com/fusiontables/Home">Google Fusion Tables</a>:</p><p><a
href="https://www.google.com/fusiontables/DataSource?snapid=S356319as28">2011-4th-quarter</a><br
/> <a
href="https://www.google.com/fusiontables/DataSource?snapid=S356320GkBI">2011-3rd-quarter</a><br
/> <a
href="https://www.google.com/fusiontables/DataSource?snapid=S3563223x4l">2011-2nd-quarter</a><br
/> <a
href="https://www.google.com/fusiontables/DataSource?snapid=S356323qgrw">2011-1st-quarter</a><br
/> <a
href="https://www.google.com/fusiontables/DataSource?snapid=S356321l1Z7">2010-4th-quarter</a></p> ]]></content:encoded> <wfw:commentRss>http://www.dylanbarlett.com/2012/01/capital-bikeshare-trip-history-data/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Android WebDriver without the SDK</title><link>http://www.dylanbarlett.com/2012/01/android-webdriver-without-the-sdk/</link> <comments>http://www.dylanbarlett.com/2012/01/android-webdriver-without-the-sdk/#comments</comments> <pubDate>Sun, 08 Jan 2012 18:33:53 +0000</pubDate> <dc:creator>Dylan</dc:creator> <category><![CDATA[Python]]></category> <category><![CDATA[Selenium]]></category> <category><![CDATA[Software]]></category> <guid
isPermaLink="false">http://www.dylanbarlett.com/?p=222</guid> <description><![CDATA[The Android WebDriver docs imply that you need the Android SDK and a USB connection to run Selenium tests on an Android device. This is not the case. You can run the WebDriver APK and connect via Wi-Fi. On your &#8230; <a
href="http://www.dylanbarlett.com/2012/01/android-webdriver-without-the-sdk/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>The <a
href="http://code.google.com/p/selenium/wiki/AndroidDriver">Android WebDriver docs</a> imply that you need the Android SDK and a USB connection to run Selenium tests on an Android device. This is not the case. You can run the WebDriver APK and connect via Wi-Fi.</p><p>On your device:<ol><li>Enable non-Market apps (Settings > Applications)</li><li>Download the latest android-server APK from <a
href="http://code.google.com/p/selenium/downloads/list">http://code.google.com/p/selenium/downloads/list</a></li><li>Install the APK</li><li>Launch WebDriver</li><li>Determine your IP (Settings > Wireless &#038; networks > Wi-Fi settings > SSID)</li></ol><p>On your workstation:<ol><li>Confirm that WebDriver is running and available by browsing to http://device_ip:8080/wd/hub/.</li><li>Run your Selenium script as usual (I use the Python bindings):<pre class="brush: python; title: ; notranslate">
from selenium import webdriver
android = webdriver.Remote(command_executor='http://device_ip:8080/wd/hub',  desired_capabilities=webdriver.DesiredCapabilities.ANDROID)
android.get(&quot;http://www.google.com&quot;)
# File will be saved on your workstation, not the device
android.get_screenshot_as_file(&quot;android_google.png&quot;)
android.quit()
</pre><p><a
href="http://www.dylanbarlett.com/wp-content/uploads/2012/01/android_google.png"><img
src="http://www.dylanbarlett.com/wp-content/uploads/2012/01/android_google-150x300.png" alt="Screenshot of www.google.com from Android WebDriver" width="150" height="300" class="alignleft size-medium wp-image-223" /></a></li></ol> ]]></content:encoded> <wfw:commentRss>http://www.dylanbarlett.com/2012/01/android-webdriver-without-the-sdk/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Selenium browser speed comparison</title><link>http://www.dylanbarlett.com/2012/01/selenium-browser-speed-comparison/</link> <comments>http://www.dylanbarlett.com/2012/01/selenium-browser-speed-comparison/#comments</comments> <pubDate>Sun, 08 Jan 2012 03:57:02 +0000</pubDate> <dc:creator>Dylan</dc:creator> <category><![CDATA[Python]]></category> <category><![CDATA[Selenium]]></category> <category><![CDATA[Software]]></category> <guid
isPermaLink="false">http://www.dylanbarlett.com/?p=218</guid> <description><![CDATA[I use Selenium (via the Python bindings) for automated browser testing. My current project needs to run as fast as possible, so I compared the executions speed of a small test script in various browsers, both directly via WebDriver and &#8230; <a
href="http://www.dylanbarlett.com/2012/01/selenium-browser-speed-comparison/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>I use <a
href="http://seleniumhq.org/">Selenium</a> (via the Python bindings) for automated browser testing. My current project needs to run as fast as possible, so I compared the executions speed of a small test script in various browsers, both directly via WebDriver and through local Selenium Server. Elements are selected by name, CSS path, and XPath. The is also some direct JavaScript execution to get around quirks in the application under test.</p><p>Test execution time (average of five runs):<br
/> <a
href="http://www.dylanbarlett.com/wp-content/uploads/2012/01/BrowserSpeeds.png"><img
src="http://www.dylanbarlett.com/wp-content/uploads/2012/01/BrowserSpeeds.png" alt="Test execution time graph" width="479" height="314" class="alignleft size-full wp-image-220" /></a></p><table
summary="Test execution time" id="browsertesttimes"><thead><tr><th
scope="col">Browser</th><th
scope="col">Interface</th><th
scope="col">Time (sec)</th></tr></thead><tbody><tr><td>Firefox</td><td>WebDriver</td><td>9.22</td></tr><tr><td>Firefox</td><td>Server</td><td>5.58</td></tr><tr><td>Chrome</td><td>WebDriver</td><td>5.35</td></tr><tr><td>Chrome</td><td>Server</td><td>6.55</td></tr><tr><td>HTMLUnit<sup>1</sup></td><td>Server</td><td>3.07</td></tr></tbody></table><p>[1] JavaScript enabled (emulates Firefox 3.6)</p><h4>Test environment</h4><p>Intel Core2Quad Q8400<br
/> Ubuntu 11.04 amd64, Linux 2.6.38<br
/> Sun JRE 1.6.0_26-b03<br
/> Selenium Server 2.16.1<br
/> Selenium Python bindings 2.15</p> ]]></content:encoded> <wfw:commentRss>http://www.dylanbarlett.com/2012/01/selenium-browser-speed-comparison/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Installing iTop in a VM</title><link>http://www.dylanbarlett.com/2011/10/installing-itop-in-a-vm/</link> <comments>http://www.dylanbarlett.com/2011/10/installing-itop-in-a-vm/#comments</comments> <pubDate>Sun, 23 Oct 2011 23:50:56 +0000</pubDate> <dc:creator>Dylan</dc:creator> <category><![CDATA[iTop]]></category> <category><![CDATA[Software]]></category> <guid
isPermaLink="false">http://www.dylanbarlett.com/?p=191</guid> <description><![CDATA[<a
href="http://www.combodo.com/-Overview-.html">iTop</a> (IT Operational Portal) is an <acronym
title="Information Technology Infrastructure Library">ITIL</acronym>-oriented service management application that includes a customizable <acronym
title="Configuration Management Database">CMDB</acronym>. The documentation is a bit spotty, so here's how to experiment in a virtual machine. <a
href="http://www.dylanbarlett.com/2011/10/installing-itop-in-a-vm/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><a
href="http://www.combodo.com/-Overview-.html">iTop</a> (IT Operational Portal) is an <acronym
title="Information Technology Infrastructure Library">ITIL</acronym>-oriented service management application that includes a customizable <acronym
title="Configuration Management Database">CMDB</acronym>. The documentation is a bit spotty, so here&#8217;s how to experiment in a virtual machine.</p><ol><li>Download the <a
href="http://www.turnkeylinux.org/lampstack">TurnKey LAMP stack image</a> (available as VMDK, OVF, and ISO) and open in your favorite virtualization software.</li><li>Boot and configure the OS and MySQL root accounts</li><li>Install OS updates</li><li>Note the IP address</li><li>If you need external authentication, install PHP LDAP support and verify:<pre class="brush: bash; title: ; notranslate">apt-get install php5-ldap php5-cli
php -m | grep ldap</pre></li><li>Restart Apache<pre class="brush: bash; title: ; notranslate">service apache2 restart</pre></li><li>Configure MySQL<ol><li>Login to phpMyAdmin at https://ip_address:12322</li><li>Create a user called itop</li><li>Select <em>Create database with same name and grant all privileges</em></li></ol></li><li>Download &amp; install iTop files<pre class="brush: bash; title: ; notranslate">wget http://sourceforge.net/projects/itop/files/itop/1.2/iTop-1.2.0-299.zip
unzip iTop-1.2.0-299.zip
mkdir /var/www/itop
cp -r web/* /var/www/itop
chown -R www-data /var/www/itop/</pre></li><li>Edit configuration file<pre class="brush: bash; title: ; notranslate">nano /var/www/itop/config-itop.php</pre><ol><li>Change line 26 to your timezone<pre class="brush: php; title: ; notranslate">'timezone' =&gt; 'America/New_York'</pre></li><li>Optional: if you use LDAP authentication, change lines 65-70. This will allow any user account in the example.com domain to login (create the accounts without @example.com)<pre class="brush: php; title: ; notranslate">'host' =&gt; 'LDAP_server_hostname',
'port' =&gt; 389,
'default_user' =&gt; 'bind_user',
'default_pwd' =&gt; 'bind_password',
'base_dn' =&gt; 'dc=example,dc=com',
'user_query' =&gt; '(&amp;(samaccountname=%1$s)(objectCategory=User)</pre></li><li>Optional: comment out all languages other than en to improve performance</li></ol></li><li>Browse to http://ip_address/itop and complete the wizard</li><li>Optional: configure <a
href="http://sourceforge.net/apps/mediawiki/itop/index.php?title=Background_processing_cron/schtasks">background processing</a> (cron)</li><li>Optional: install the Data Model Toolkit<ol><li>Download &amp; install<pre class="brush: bash; title: ; notranslate">cd /var/www/iTop
wget http://www.combodo.com/documentation/iTopDataModelToolkit-1.2.zip
unzip iTopDataModelToolkit-1.2.zip
chown -R www-data toolkit</pre></li><li>Browse to http://ip_address:/itop/toolkit</li></ol></li></ol> ]]></content:encoded> <wfw:commentRss>http://www.dylanbarlett.com/2011/10/installing-itop-in-a-vm/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>APC UPS Monitoring on ClearOS</title><link>http://www.dylanbarlett.com/2011/06/apc-ups-monitoring-on-clearos/</link> <comments>http://www.dylanbarlett.com/2011/06/apc-ups-monitoring-on-clearos/#comments</comments> <pubDate>Sun, 19 Jun 2011 23:59:12 +0000</pubDate> <dc:creator>Dylan</dc:creator> <category><![CDATA[ClearOS]]></category> <category><![CDATA[Software]]></category> <guid
isPermaLink="false">http://www.dylanbarlett.com/?p=188</guid> <description><![CDATA[Configuring an <a
href="http://www.apc.com/resource/include/techspec_index.cfm?base_sku=BE550G">APC Back-UPS ES 550</a> with ClearOS 5.2 <a
href="http://www.dylanbarlett.com/2011/06/apc-ups-monitoring-on-clearos/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Configuring an <a
href="http://www.apc.com/resource/include/techspec_index.cfm?base_sku=BE550G">APC Back-UPS ES 550</a> with ClearOS 5.2:</p><ol><li>Connect included RJ-45 to USB cable.</li><li>Install net-snmp:<pre class="brush: bash; title: ; notranslate">yum install net-snmp</pre></li><li>Download the latest APCUPSD rpms from <a
href="http://sourceforge.net/projects/apcupsd/files/">SourceForge</a>. apcupsd is the base package, apcupsd-multimon is the web interface. For ClearOS 5.2, use the .el5.i386.rpm packages.</li><li>Install:<pre class="brush: bash; title: ; notranslate">rpm -ivh apcupsd-3.14.8-1.el5.i386.rpm
rpm -ivh apcupsd-multimon-3.14.8-1.el5.i386.rpm</pre></li><li>Start monitoring service:<pre class="brush: bash; title: ; notranslate">service apcupsd start</pre></li><li>Display UPS status:<pre class="brush: bash; title: ; notranslate">apcaccess status</pre></li><li>Browse to http://hostname/cgi-bin/multimon.cgi</li></ol> ]]></content:encoded> <wfw:commentRss>http://www.dylanbarlett.com/2011/06/apc-ups-monitoring-on-clearos/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Protected: WordPress Memo</title><link>http://www.dylanbarlett.com/2011/04/wordpress-memo/</link> <comments>http://www.dylanbarlett.com/2011/04/wordpress-memo/#comments</comments> <pubDate>Thu, 21 Apr 2011 16:27:33 +0000</pubDate> <dc:creator>Dylan</dc:creator> <category><![CDATA[Software]]></category> <guid
isPermaLink="false">http://www.dylanbarlett.com/?p=157</guid> <description><![CDATA[There is no excerpt because this is a protected post.]]></description> <content:encoded><![CDATA[<form
action="http://www.dylanbarlett.com/wp-pass.php" method="post"><p>This post is password protected. To view it please enter your password below:</p><p><label
for="pwbox-157">Password:<br
/> <input
name="post_password" id="pwbox-157" type="password" size="20" /></label><br
/> <input
type="submit" name="Submit" value="Submit" /></p></form> ]]></content:encoded> <wfw:commentRss>http://www.dylanbarlett.com/2011/04/wordpress-memo/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>ClearOS and StartSSL</title><link>http://www.dylanbarlett.com/2011/03/startssl-and-clearos/</link> <comments>http://www.dylanbarlett.com/2011/03/startssl-and-clearos/#comments</comments> <pubDate>Tue, 22 Mar 2011 05:25:49 +0000</pubDate> <dc:creator>Dylan</dc:creator> <category><![CDATA[ClearOS]]></category> <category><![CDATA[Software]]></category> <guid
isPermaLink="false">http://www.dylanbarlett.com/?p=146</guid> <description><![CDATA[How to obtain a free SSL certificate and install it for Webconfig and SOGo on ClearOS <a
href="http://www.dylanbarlett.com/2011/03/startssl-and-clearos/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><em>Update 3/21/12: I&#8217;ve revised the instructions so that Webconfig serves the entire StartCom chain. This prevents some browsers, particularly Android, from distrusting an an otherwise-valid certificate.</em></p><p>As <a
href="../?p=40">previously described</a>, I use <a
href="http://www.clearfoundation.com/Software/overview.html">ClearOS</a> as an all-purpose small business server. There are two public-facing components: Webconfig (remote admin) and <a
href="http://www.sogo.nu/">SOGo</a> (groupware, proxied thru Apache). By default, ClearOS secures both with self-signed SSL certificates. While this works, it&#8217;s unprofessional and inconvenient to make users add a security exception to every browser they connect from.</p><p>Inspired by <a
href="http://www.clearfoundation.com/component/option,com_kunena/Itemid,232/catid,25/func,view/id,8435/#20784">this post</a>, I decided to try a Class 1 cert from <a
href="https://www.startssl.com/?app=0">StartCom</a>. They provide free certs valid for one year (more info at <a
href="http://www.sslshopper.com/article-free-ssl-certificates-from-a-free-certificate-authority.html">SSL Shopper</a>). Once you&#8217;ve signed up with StartCom and validated your domain ownership:</p><ol><li><a
href="http://www.clearfoundation.com/component/option,com_kunena/Itemid,232/catid,25/func,view/id,8435/#20772">Change the default message digest parameter</a> in <code>/etc/ssl/openssl.cnf</code> from MD5 to SHA1:<br
/> <code>default_md = sha1</code> (both lines)</li><li>Delete the System Certificate</li><li>Create a CSR for the System Certificate</li><li>Provide the CSR to StartCom and retrieve the cert.</li><li>Upload the cert into Webconfig. This will create <code>/etc/ssl/sys-0-cert.pem</code> and <code>/etc/ssl/private/sys-0-key.pem</code></li></ol><p>You can now configure Apache (web pages and SOGo):</p><ol><li>Download the certificate chain (<code><a
href="http://www.startssl.com/certs/ca.pem">ca.pem</a></code> and <code><a
href="http://www.startssl.com/certs/sub.class1.server.ca.pem">sub.class1.server.ca.pem</a></code>) to <code>/etc/ssl</code></li><li>Modify <code>/etc/httpd/conf.d/ssl.conf</code>:<code><br
/> SSLCertificateFile /etc/ssl/sys-0-cert.pem<br
/> SSLCertificateKeyFile /etc/ssl/private/sys-0-key.pem<br
/> SSLCertificateChainFile /etc/ssl/sub.class1.server.ca.pem<br
/> SSLCACertificateFile /etc/ssl/ca.pem</code></li><li>Restart Apache:<pre class="brush: bash; title: ; notranslate">service httpd restart</pre></li></ol><p>Webconfig uses a different Apache instance with configuration files in <code>/usr/webconfig/conf</code>.</p><ol><li>Overwrite the self-signed cert and key and set proper ownership:<pre class="brush: bash; title: ; notranslate">cp /etc/ssl/sys-0-cert.pem /usr/webconfig/conf/server.crt
cp /etc/ssl/private/sys-0-key.pem /usr/webconfig/conf/server.key
chown root /usr/webconfig/conf/server.*</pre></li><li>Copy the StartCom chain and set proper ownership:<pre class="brush: bash; title: ; notranslate">cp /etc/ssl/ca.pem /usr/webconfig/conf/
cp /etc/ssl/sub.class1.server.ca.pem /usr/webconfig/conf/
chown root /usr/webconfig/conf/*.pem</pre></li><li>Modify <code>/usr/webconfig/conf/extra/httpd-ssl.conf</code>:<code><br
/> SSLCertificateFile /usr/webconfig/conf/sys-0-cert.pem<br
/> SSLCertificateKeyFile /usr/webconfig/conf/private/sys-0-key.pem<br
/> SSLCertificateChainFile /usr/webconfig/conf/sub.class1.server.ca.pem<br
/> SSLCACertificateFile /usr/webconfig/conf/ca.pem</code></li><li>Restart Webconfig:<pre class="brush: bash; title: ; notranslate">service webconfig restart</pre></li></ol><p>Use the <a
href="http://www.sslshopper.com/ssl-checker.html">SSL Checker</a> to verify that Apache is serving the entire chain for both sites.</p><p>If you connect to the IMAP server (Cyrus) directly:</p><ol><li>Copy the files and set proper ownership:<pre class="brush: bash; title: ; notranslate">cp /etc/ssl/sys-0-cert.pem /etc/imapd.d/cert.pem
cp /etc/ssl/private/sys-0-key.pem /etc/imapd.d/key.pem
chown cyrus:root /etc/imapd.d/*.pem</pre></li><li>Restart Cyrus<pre class="brush: bash; title: ; notranslate">service cyrus-imapd restart</pre></li></ol> ]]></content:encoded> <wfw:commentRss>http://www.dylanbarlett.com/2011/03/startssl-and-clearos/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Dynamic page generated in 0.632 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-16 23:54:17 -->
<!-- Compression = gzip -->
