<?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>Big Trapeze &#187; Tech</title>
	<atom:link href="http://bigtrapeze.com/category/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://bigtrapeze.com</link>
	<description>Big Ideas From the Little Guys</description>
	<lastBuildDate>Wed, 16 May 2012 21:31:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Enabling Wildcard SSL on a Heroku Rails App</title>
		<link>http://bigtrapeze.com/2012/05/16/enabling-wildcard-ssl-on-a-heroku-rails-app/</link>
		<comments>http://bigtrapeze.com/2012/05/16/enabling-wildcard-ssl-on-a-heroku-rails-app/#comments</comments>
		<pubDate>Wed, 16 May 2012 21:31:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Learning Rails]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[homepost]]></category>

		<guid isPermaLink="false">http://bigtrapeze.com/?p=339</guid>
		<description><![CDATA[Typically installing SSL is challenging enough, but add Heroku and the need for a wildcard SSL certificate in the mix and you&#8217;ve got bigger issues. Here are the steps to get it done with as little fuss as possible: Purchase a wildcard SSL certificate. I used RapidSSL, and while any will work, Comodo seems to [...]]]></description>
			<content:encoded><![CDATA[<p>Typically installing SSL is challenging enough, but add Heroku and the need for a wildcard SSL certificate in the mix and you&#8217;ve got bigger issues. Here are the steps to get it done with as little fuss as possible:</p>
<ol>
<li>Purchase a wildcard SSL certificate. I used <a href="http://www.rapidssl.com/buy-ssl/wildcard-ssl-certificate/">RapidSSL</a>, and while any will work, <a href="https://dnsimple.com/pricing">Comodo seems to be the one currently recommended by DNSimple</a>, which we&#8217;ll use later in these instructions.</li>
<li>Next, add the <a href="https://devcenter.heroku.com/articles/ssl-endpoint-beta">SSL Endpoint add-on</a> to your app via Heroku. It&#8217;s an additional $20 a month to enable this service, that&#8217;s just the cost-of-doin-bidness with Heroku.</li>
<li>So, at this point, you have your wildcard SSL installed with Heroku. You can tell if you installed it correctly by dropping into the Heroku CLI (which you can install via the <a href="https://toolbelt.heroku.com/">Heroku Toolbelt</a>) and issuing a &#8220;heroku certs&#8221;. This should give you an endpoint, which looks something like:
<p><code>waterfall-9359.herokussl.com</code></p>
<p>You&#8217;ll need your specific endpoint for our next step, so copy it and keep it ready.</li>
<li>Finally, create an account with someone like DNSimple. <a href="http://blog.dnsimple.com/introducing-the-alias-record/" target="_blank">Without an ALIAS service like this</a>, you won&#8217;t be able to enable SSL on your root domain (like <em>myapp.com</em> or <em>www.myapp.com</em>). If you used DNSimple, go to the <em>Advanced Editor </em>for your domain. You&#8217;ll want to add the following:
<p>- an ALIAS record for your root url, <em>myapp.com</em>, which points to your Heroku-issued endpoint, like: <em>waterfall-9359.herokussl.com<br />
</em>- a CNAME record for your <em>www</em>-based url, <em>www.myapp.com</em>, which points to the same endpoint above, like <em>waterfall-9359.herokussl.com<br />
</em>- CNAME records for each subdoman you wish to enable SSL on, like <em>blog.myapp.com</em> or <em>account.myapp.com,</em> each pointing to our Heroku endpoint</li>
<li> That should do it! The next step would be enabling SSL in your app, which is a straightforward process achieved by adding <code>config.force_ssl = true</code> to your application.rb file. (For more details on how to enable it in production only, <a href="http://www.simonecarletti.com/blog/2011/05/configuring-rails-3-https-ssl/" target="_blank">read this excellent blog post from Simone Carletti.</a>)</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://bigtrapeze.com/2012/05/16/enabling-wildcard-ssl-on-a-heroku-rails-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extracting a salt from an MD5 Hash</title>
		<link>http://bigtrapeze.com/2012/04/05/extracting-a-salt-from-an-md5-hash/</link>
		<comments>http://bigtrapeze.com/2012/04/05/extracting-a-salt-from-an-md5-hash/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 22:48:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[homepost]]></category>

		<guid isPermaLink="false">http://bigtrapeze.com/?p=270</guid>
		<description><![CDATA[In December of 2011, members of activist group Anonymous released a slew (over 860,000 records) of private data stolen from think-tank Stratfor. While I don&#8217;t condone the theft, I do 1) condone the attention it brings to a firm that prides itself on being both intelligent and secure&#8211;as a means of showing the public that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mashable.com/2011/12/29/stratfor-credit-card-hack/" target="_blank">In December of 2011</a>, members of <a href="https://twitter.com/#!/AnonymousIRC/" target="_blank">activist group <em>Anonymous</em></a> released a slew (over 860,000 records) of private data stolen from think-tank Stratfor. While I don&#8217;t condone the theft, I do 1) condone the attention it brings to a firm that prides itself on being both intelligent and secure&#8211;as a means of showing the public that no data is entirely secure, and 2) as a means of pointing out these insecurities in the hopes that it will make them <em>more</em> intelligent and <em>more</em> secure with our data.</p>
<p>I&#8217;ve seen the list, in an attempt to see if my own information was compromised. It was not (at least here, but was recently in the <a href="http://mashable.com/2012/01/16/hackers-zappos-6pm/" target="_blank">Zappos breach</a>), but I can&#8217;t say the same for almost a million other people. The list contains mostly inconsequential information&#8211;but it does have an encrypted password (along with the email address and username) for each person. After a cursory run through of several thousand random encrypted passwords, I was not able to crack any using the method <a href="http://bigtrapeze.com/2008/01/18/cracking-md5-hashes-with-the-webtionary/" target="_blank">I published a few years back.</a></p>
<p><strong>Salting</strong></p>
<p>These passwords are at least salted (<em>salting </em>is the process of taking a password and adding extra characters to it to make it more difficult to crack.) If your password was &#8220;submarine&#8221; using MD5 encryption (which is what the majority of websites use to encrypt stored data) it would be encrypted as &#8220;a9bdfa76aa6d76f7bde66e470cf98553.&#8221; In an effort to make your data more secure, a programmer might <em>salt</em> your data with another word, like  &#8221;kangaroo,&#8221; by adding it to your password before storing it. So, instead of storing the MD5 hash of &#8220;submarine,&#8221; which might be easy for a hacker to guess if they accessed the user database, the password is stored as a hash of &#8220;submarinekangaroo,&#8221; which would be much harder for someone to guess. A smarter salt would be something random, like &#8220;tH7rWslwj6&#8243;, so that brute-force attacks on passwords with a word-list for salts would be rendered mostly useless. Try it yourself if you want: If you&#8217;re on a Mac, go into Terminal and type</p>
<p><code>md5 -s 'whatever-you-want'</code></p>
<p>then hit Enter. What you&#8217;ll see is the hashed value of your string of text. Now try to add some characters to it&#8211;your own salt&#8211;and see how the results change. It&#8217;s important to realize that there&#8217;s no &#8220;unhash&#8221; method, per-se. There&#8217;s no such thing as</p>
<p><code>unmd5 -s 'a9bdfa76aa6d76f7bde66e470cf98553'</code></p>
<p>and get &#8220;submarine&#8221; in response. But&#8211;if you go to Google and search for &#8220;a9bdfa76aa6d76f7bde66e470cf98553&#8243;, you&#8217;ll find plenty of posts telling you the answer is &#8220;submarine.&#8221; Salt <em>submarine</em> with your own new word (<code>md5 -s 'submarineastroturf'</code>), then search for that&#8211;chances are, your search will come up empty. That&#8217;s the importance of a salt.</p>
<p><strong>How does my website know my password then?</strong></p>
<p>In most cases, they don&#8217;t. They keep the hashed version of your password, but they have no way of knowing what it actually is in &#8220;plain-text.&#8221; To see if the password you enter when you login  matches what they&#8217;ve stored in their database, they have to hash it, and compare it to what&#8217;s on file. So if your hashed password was stored as</p>
<p><code>8833f74b9da9cf81d33f6c6a79ac9985</code></p>
<p>and you entered &#8220;telescope&#8221; as your password, a program quickly converts your plain-text password to</p>
<p><code>8833f74b9da9cf81d33f6c6a79ac9985</code></p>
<p>and compares it to what&#8217;s stored. In this case, there&#8217;s a match&#8211;and you&#8217;re granted access to your account. If they happened to salt your password before storing it by adding the word &#8220;pineapple&#8221; to the beginning, then your stored password would be:</p>
<p><code>0cf7664d30e8a72b6b423148578ddfba</code></p>
<p>(again, you can confirm by typing <code>md5 -s 'pineappletelescope'</code> in your terminal). So, when you enter &#8220;telescope&#8221; into your website&#8217;s login box, before it&#8217;s hashed, the website will add &#8220;pineapple&#8221; to your password, <em>then</em> hash it to compare with what&#8217;s stored in the database. You can see not only the importance of salting, but also knowing exactly what the salt is. Without it (without knowing <em>pineapple</em>, in this example), it would impossible to match the password you entered with what was stored.</p>
<p><strong>Looking for patterns</strong></p>
<p>So, we can assume that Stratfor is at least smart enough to salt their passwords&#8211;the question is, can we take 800+K hashed salted-passwords, and find any patterns or similarities in them? From that, could we build a frequency of the most common hashed passwords, then assume that those passwords are the same&#8211;and try to derive an algorithm that produces a salt? Can we get lucky and hope that Stratfor salted their passwords with either the username or email address of each user? Or did they use the same salt for every user? I would assume they wouldn&#8217;t use an email address&#8211;especially since a user can change their email address&#8211;so we&#8217;ll take that one out of the mix. I will, however, try the username as a salt&#8211;as that is typically something a user isn&#8217;t allowed to change.</p>
<p><strong>The First Clue&#8211;No Duplicate Hashes</strong></p>
<p>To begin, I sorted the 860,160 hashed-passwords alphabetically, and interestingly (at least in the few thousand I quickly scanned), there were no matches.</p>
<p><em>What does this mean?<br />
</em>It means that a different salt is being used for each person.</p>
<p><em>Why?<br />
</em>Because in a list of 860,160 passwords, the chances of <strong><em>none</em> </strong>being the same are infinitesimally small. Let&#8217;s say two people used the phrase &#8220;opensesame&#8221; as their password. The hash of this is:</p>
<p><code>e6078b9b1aac915d11b9fd59791030bf</code></p>
<p>Let&#8217;s now say that Stratfor salted all passwords when they stored them, and salted them with the phrase &#8220;fishbowl123&#8243; by appending it to the end of a user&#8217;s password. So, <em>opensesame</em> becomes <em>opensesamefishbowl123,</em> which is hashed as</p>
<p><code>8feb9db2775f81e3b152803bb9704fad</code></p>
<p>So, theoretically, if only 2 out of 860,160 people had the password of &#8220;opensesame&#8221;, we should see the hash <em>8feb9db2775f81e3b152803bb9704fad</em> show up at least twice. But there are no duplicates&#8211;and that indicates that the same salt isn&#8217;t being used for each person. This is too large a sample size to not have at least 2 people with the same password&#8211;<em>any</em> password. Since we learned above that the salt must be known in order for a website to check your password, we&#8217;ll assume that Stratfor made their salt based on something unique to the user.</p>
<p><strong>The User Record</strong></p>
<p>The user records for the Stratfor file include information like <em>name,</em> s<em>tratfor ID, user ID, user email address, timezone, picture, signature, theme, last login date, account creation date</em>, and a few trivial ones. We know that the salt most likely comes from one of these fields of information, and we know the salt needs to be unique to each user, so we can start eliminating some of these. The dates are interesting, but there is a good possibility that there are plenty of users with the same login date, or account creation date, even down to the hour or minute&#8211;so we can&#8217;t assume that is unique. We also know that there will be plenty of duplications of the timezone, so that one could be eliminated as well. The <em>theme</em> (which I assume was some sort of color theme or account theme for each user) can also fall under the &#8220;duplicate&#8221; category, but it falls under another greater category&#8211;which is that of a field where the value could change. For the salted password to work&#8211;the salt must always stay the same. We can also consider <em>user email address</em> as something changeable, as well as the user&#8217;s name&#8211;so we&#8217;ll eliminate those from our list of possible salt options.</p>
<p>That leaves us with 2 good options:</p>
<ul>
<li>user id</li>
<li>Stratfor id</li>
</ul>
<div>Because we know that the salt is unique to a user, we have a good starting point for our attack, using the two options above as our primary salt tests. We know that Stratfor isn&#8217;t using a random string for a salt&#8211;something that they&#8217;ve locked away in some file&#8211;because even if they did, there&#8217;s a great possibility we would have duplicate hashes&#8211;and we have none.</div>
<div></div>
<div><strong>We have candidates for our salt, now what?</strong></div>
<p>To do all the password crunching and text analysis, I&#8217;ll be using my new friend, Ruby on Rails. Rails makes it really easy to spin up a quick database and start throwing data in it and doing text manipulation. The first step is to clean up the list and throw it into a database table. I took the huge Stratfor file, removed the extraneous columns and imported the user records into a database.</p>
<p>Next I created a model for attempts. The attempts are based on the premise that at least one user out of the 860K will have one of the &#8220;<a href="http://www.tomshardware.com/news/imperva-rockyou-most-common-passwords,9486.html">10 most common passwords</a>&#8221; (which, incidentally, were taken from the leak of 32 MILLION passwords from RockYou.com&#8217;s compromised systems.)</p>
<p>The 10 passwords we&#8217;ll start with are:</p>
<ul>
<li>123456</li>
<li>12345</li>
<li>123456789</li>
<li>password</li>
<li>iloveyou</li>
<li>princess</li>
<li>1234567</li>
<li>12345678</li>
<li>abc123</li>
<li>monkey</li>
</ul>
<p>What we&#8217;ll do is take each of the 10 passwords, and add the user id to the beginning, test it, then add the user id to the end, and test it. For example, lets say the user&#8217;s password hash is &#8220;3d50169ccfe06ecf1bdf4c63fb199bd9&#8243;, their user id is &#8220;20,&#8221; and their Stratfor ID is &#8220;23087.&#8221;</p>
<p>I&#8217;ll take our first password, &#8220;123456,&#8221; prepend &#8220;20&#8243; to it, to get &#8220;20123456,&#8221; then get the hash (md5 -s &#8217;20123456&#8242;):</p>
<p><code>11720f3fa65c0fe57212ba6f12af1af1</code></p>
<p>No match. So now I&#8217;ll try &#8220;123456&#8243; and append &#8220;20&#8243; to it, to get &#8220;12345620,&#8221; then get the hash (md5 -s &#8217;12345620&#8242;):</p>
<p><code>594111f029cbea462f70398257ac0e7f</code></p>
<p>No match. Now I&#8217;ll try it with their Stratfor ID. No match? Now I&#8217;ll move to the next of our Top 10 passwords, &#8220;12345,&#8221; and continue the test. For each password in our list, we have to try 4 different combinations. That&#8217;s 40 combinations for our 10 passwords, tried across 860,160 rows, which means over 36 million tries.</p>
<p>If none of these works, the odds of the salt being based off one of our test columns seems slim, at which point we might consider that the hash is built off of more than one column (for example, prepending the <em>strafor id</em> to the password and appending the <em>user id</em> to the end). If that&#8217;s the case, our number of brute-force attempts increases exponentially&#8211;and that&#8217;s bad news for this exercise, but better news for those whose data is at risk.</p>
<p><strong>The Results</strong></p>
<p>Armed with my list of 10 common passwords and the Stratfor hash, I put Ruby to the test. Less than 20 minutes later (even running on an underpowered MacBook Air), the experiment was a success, and the results are stunning:</p>
<p>Of the 860,160 user accounts from the Stratfor file, 986 of the users had one of the ten common passwords. The salt, as it turns out, is the Stratfor ID, prepended to a user&#8217;s password. So, if your password happend to be &#8220;monkey,&#8221; and your Stratfor ID was &#8220;187519,&#8221; your password is based off the MD5 hash of &#8220;187519monkey.&#8221; (Incidentally, 14 people of 860,160 had the password <em>monkey. </em>The most common, sadly, were <em>123456</em> (483 occurrences), and <em>password </em>(285 occurrences).</p>
<p><strong>What Does This Mean?</strong></p>
<p>It means someone nefarious, knowing the salt column, could take it and run each of the users&#8217; passwords against a brute-force dictionary&#8211;and there is no doubt that the 986 number would greatly increase, giving the hacker access to thousands of accounts.</p>
<p>It also means that it only takes two people to have a bad password to crack a salt. If no-one in the 800K test had used one of those top 10 passwords, there&#8217;s a good chance I would&#8217;ve gone on to another method, having found no matches.</p>
<p>What does it mean to Stratfor, and companies like them? <em>You have to do a better job of protecting our data.</em> Salting is a good step towards protecting data, but if you don&#8217;t use it right, it&#8217;s only a minor stumbling block to someone with relatively little skill. Perhaps salting with data from multiple columns, or column data in reverse (maybe the username backwards), or a column on each end of the password (maybe a username and the account-created date), like &#8220;username<em>monkey</em>01-25-2012&#8243; would be better. The insecurity of our personal data is troublesome, and breaches happen almost every day. I can only hope this will help those who keep our data become more responsible in their protection of it.</p>
]]></content:encoded>
			<wfw:commentRss>http://bigtrapeze.com/2012/04/05/extracting-a-salt-from-an-md5-hash/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Removing the passphrase from SSH keys</title>
		<link>http://bigtrapeze.com/2012/01/17/removing-the-passphrase-from-ssh-keys/</link>
		<comments>http://bigtrapeze.com/2012/01/17/removing-the-passphrase-from-ssh-keys/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 17:40:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[homepost]]></category>

		<guid isPermaLink="false">http://bigtrapeze.com/?p=152</guid>
		<description><![CDATA[I never can remember this: Removing a passphrase from your id_rsa key Backup your id_rsa file! Then, openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa_new cp ~/.ssh/id_rsa ~/.ssh/id_rsa.backup rm ~/.ssh/id_rsa cp ~/.ssh/id_rsa_new ~/.ssh/id_rsa chmod 400 ~/.ssh/id_rsa Removing a passphrase from an SSL server key Create a private key: openssl genrsa -des3 -out server.key 1024 Generate a CSR: [...]]]></description>
			<content:encoded><![CDATA[<p>I never can remember this:<br />
<strong>Removing a passphrase from your id_rsa key</strong></p>
<ol>
<li>Backup your id_rsa file! Then,</li>
<li><code>openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa_new</code></li>
<li><code>cp ~/.ssh/id_rsa ~/.ssh/id_rsa.backup</code></li>
<li><code>rm ~/.ssh/id_rsa</code></li>
<li><code>cp ~/.ssh/id_rsa_new ~/.ssh/id_rsa</code></li>
<li><code>chmod 400 ~/.ssh/id_rsa</code></li>
</ol>
<p><strong>Removing a passphrase from an SSL server key</strong></p>
<ol>
<li>Create a private key: <code>openssl genrsa -des3 -out server.key 1024</code></li>
<li>Generate a CSR: <code>openssl req -new -key server.key -out server.csr</code></li>
<li>Remove passphrase from key:
<ul>
<li><code>cp server.key server.key.org</code></li>
<li><code>openssl rsa -in server.key.org -out server.key</code></li>
</ul>
</li>
</ol>
<p>For more details:</p>
<p><a href="http://www.akadia.com/services/ssh_test_certificate.html">http://www.akadia.com/services/ssh_test_certificate.html</a><br />
<a href="http://www.thinkplexx.com/learn/howto/security/ssl/remove-passphrase-password-from-private-rsa-key">http://www.thinkplexx.com/learn/howto/security/ssl/remove-passphrase-password-from-private-rsa-key</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bigtrapeze.com/2012/01/17/removing-the-passphrase-from-ssh-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create an OGV file from M4V</title>
		<link>http://bigtrapeze.com/2011/12/29/create-an-ogv-file-from-m4v/</link>
		<comments>http://bigtrapeze.com/2011/12/29/create-an-ogv-file-from-m4v/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 03:13:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://bigtrapeze.com/?p=150</guid>
		<description><![CDATA[If you want to use HTML5 Video the right way, you&#8217;ll need to provide an OGV file along with your M4Vs. On the Mac, it&#8217;s easy and free: Download and install ffmpeg2theora from http://v2v.cc/~j/ffmpeg2theora/ Go into terminal, navigate to the directory where your M4V video is stored, and type ffmpeg2theora name-of-movie.m4v That&#8217;s it. Depending on the [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to use HTML5 Video the right way, you&#8217;ll need to provide an OGV file along with your M4Vs. On the Mac, it&#8217;s easy and free:</p>
<ul>
<li>Download and install <strong>ffmpeg2theora</strong> from <a href="http://v2v.cc/~j/ffmpeg2theora/">http://v2v.cc/~j/ffmpeg2theora/</a></li>
<li>Go into terminal, navigate to the directory where your M4V video is stored, and type <code>ffmpeg2theora name-of-movie.m4v</code></li>
</ul>
<p>That&#8217;s it. Depending on the length of your movie, a few minutes later you&#8217;ll have a nice OGV file to go with your M4V.</p>
]]></content:encoded>
			<wfw:commentRss>http://bigtrapeze.com/2011/12/29/create-an-ogv-file-from-m4v/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing the MySQL Gem in Lion</title>
		<link>http://bigtrapeze.com/2011/11/09/installing-the-mysql-gem-in-lion/</link>
		<comments>http://bigtrapeze.com/2011/11/09/installing-the-mysql-gem-in-lion/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 16:46:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Learning Rails]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[homepage]]></category>
		<category><![CDATA[homepost]]></category>

		<guid isPermaLink="false">http://bigtrapeze.com/?p=143</guid>
		<description><![CDATA[I kept getting weird permissions errors trying to install the MySQL gem for Ruby 1.9.2. The issue is that I was running the 64-bit version of Ruby with a 32-bit version of MySQL&#8211;which is the standard in new Lion installs. To fix, download the 64-bit version of MySQL from mysql.com, install, and then run: export [...]]]></description>
			<content:encoded><![CDATA[<p>I kept getting weird permissions errors trying to install the MySQL gem for Ruby 1.9.2. The issue is that I was running the 64-bit version of Ruby with a 32-bit version of MySQL&#8211;which is the standard in new Lion installs. To fix, download the 64-bit version of MySQL from mysql.com, install, and then run:</p>
<p><code>export ARCHFLAGS="-arch i386 -arch x86_64" ; gem install --no-rdoc --no-ri mysql -- --with-mysql-dir=/usr/local --with-mysql-config=/usr/local/mysql/bin/mysql_config<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://bigtrapeze.com/2011/11/09/installing-the-mysql-gem-in-lion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSL works in all browsers except Internet Explorer (IE 6/7/8)</title>
		<link>http://bigtrapeze.com/2011/05/18/ssl-works-in-all-browsers-except-internet-explorer-ie-678/</link>
		<comments>http://bigtrapeze.com/2011/05/18/ssl-works-in-all-browsers-except-internet-explorer-ie-678/#comments</comments>
		<pubDate>Wed, 18 May 2011 16:23:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://bigtrapeze.com/?p=140</guid>
		<description><![CDATA[I could&#8217;ve also titled this &#8220;fixing Fixing SSL Library Error: 336068931 error:14080143:SSL routines:SSL3_ACCEPT:unsafe legacy renegotiation disabled&#8221; &#8212; but that&#8217;s just crazy. Simple fix, although I don&#8217;t know or understand the consequences: In ssl.conf (on ubuntu that&#8217;s/etc/apache2/mods-enabled), add SSLInsecureRenegotiation on then reload Apache. Now my sites in IE that previously gave me an &#8220;Internet Explorer cannot [...]]]></description>
			<content:encoded><![CDATA[<p>I could&#8217;ve also titled this &#8220;fixing Fixing SSL Library Error: 336068931 error:14080143:SSL routines:SSL3_ACCEPT:unsafe legacy renegotiation disabled&#8221; &#8212; but that&#8217;s just crazy.</p>
<p>Simple fix, although I don&#8217;t know or understand the consequences:</p>
<p>In ssl.conf (on ubuntu that&#8217;s/etc/apache2/mods-enabled), add</p>
<p><code>SSLInsecureRenegotiation on</code></p>
<p>then reload Apache.</p>
<p>Now my sites in IE that previously gave me an &#8220;Internet Explorer cannot display this page&#8221; work fine. Again, I don&#8217;t know the consequences of that addition, so research or use at your own risk.</p>
]]></content:encoded>
			<wfw:commentRss>http://bigtrapeze.com/2011/05/18/ssl-works-in-all-browsers-except-internet-explorer-ie-678/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setup SSL in Your Local Development Environment with XAMPP</title>
		<link>http://bigtrapeze.com/2011/04/24/setup-ssl-in-your-local-development-environment-with-xampp/</link>
		<comments>http://bigtrapeze.com/2011/04/24/setup-ssl-in-your-local-development-environment-with-xampp/#comments</comments>
		<pubDate>Sun, 24 Apr 2011 17:32:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[homepage]]></category>
		<category><![CDATA[homepost]]></category>

		<guid isPermaLink="false">http://bigtrapeze.com/?p=130</guid>
		<description><![CDATA[Need SSL for you dev work? I constantly found myself needing a &#8220;fake&#8221; SSL certificate for local development so my local setup could match my remote setups. Here&#8217;s how to do it with XAMPP on a Mac. Drop into Terminal, and - Generate a private key: openssl genrsa -des3 -out server.key 1024 - Generate the [...]]]></description>
			<content:encoded><![CDATA[<p>Need SSL for you dev work? I constantly found myself needing a &#8220;fake&#8221; SSL certificate for local development so my local setup could match my remote setups. Here&#8217;s how to do it with XAMPP on a Mac.</p>
<p>Drop into Terminal, and</p>
<p>- Generate a private key:<br />
<code>openssl genrsa -des3 -out server.key 1024</code></p>
<p>- Generate the CSR and fill out the form (note, don&#8217;t worry about a challenge password (the 8th question)<br />
<code>openssl req -new -key server.key -out server.csr</code></p>
<p>- Configure SSL in httpd.conf for Apache:<br />
<code>cd /Applications/XAMPP/etc</code><br />
<code>sudo nano httpd.conf</code></p>
<p>- Search for # Secure (SSL/TLS) connections (line 480), uncomment (remove the # in front of&#8230;)<br />
<code>Include /Applications/XAMPP/etc/extra/httpd-ssl.conf</code></p>
<p>- Save the file (Control-O), open /Applications/XAMPP/etc/extra/httpd-ssl.conf<br />
<code>sudo nano /Applications/XAMPP/etc/extra/httpd-ssl.conf</code></p>
<p>- Edit the path to your certificate file created above. Around line 99 look for<br />
<code>SSLCertificateFile /Applications/XAMPP/etc/ssl.crt/server.crt</code></p>
<p>- If you created the certificate in your home directory, you could do<br />
<code>sudo cp ~/server.crt /Applications/XAMPP/etc/ssl.crt/server.crt</code></p>
<p>- Do the same for your SSLCertificateKeyFile (line 107)<br />
<code>sudo cp ~/server.key /Applications/XAMPP/etc/ssl.crt/server.key</code></p>
<p>- Use your XAMPP Control Panel to restart Apache</p>
]]></content:encoded>
			<wfw:commentRss>http://bigtrapeze.com/2011/04/24/setup-ssl-in-your-local-development-environment-with-xampp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Allow remote MySQL connections to an AWS Instance</title>
		<link>http://bigtrapeze.com/2011/03/01/allow-remote-mysql-connections-to-an-aws-instance/</link>
		<comments>http://bigtrapeze.com/2011/03/01/allow-remote-mysql-connections-to-an-aws-instance/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 22:04:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Amazon AWS]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://bigtrapeze.com/?p=137</guid>
		<description><![CDATA[This took a while to figure out, but it&#8217;ll be easy for you if you follow the steps below: 1. Install the EC2 API Tools (setup instructions for Mac OS X) 2. SSH into the instance in which you wish to allow remote MySQL connections, and edit the my.cnf file. In Ubuntu, you can find [...]]]></description>
			<content:encoded><![CDATA[<p>This took a while to figure out, but it&#8217;ll be easy for you if you follow the steps below:</p>
<p>1. Install the EC2 API Tools (<a href="http://www.robertsosinski.com/2008/01/26/starting-amazon-ec2-with-mac-os-x/">setup instructions for Mac OS X</a>)</p>
<p>2. SSH into the instance in which you wish to allow remote MySQL connections, and edit the my.cnf file. In Ubuntu, you can find this at</p>
<p><code>/etc/mysql/my.cnf</code></p>
<p>Look for the line that starts with <code>bind-address</code>, and comment it out. If enabled, this line tells the MySQL server to only allow connections from the localhost.</p>
<p>3. Login to your EC2 instance at Amazon AWS. Make a note of the security group that your instance belongs to. In my case, it was &#8220;default.&#8221;</p>
<p>4. Back on your machine where you installed the EC2 API Tools, run the following command:</p>
<p><code>ec2-authorize default -p 3306</code></p>
<p>* Note if your MySQL port is something other than 3306, change the above command to the appropriate number.</p>
<p>That&#8217;s it! You should be connecting now with no problems.</p>
]]></content:encoded>
			<wfw:commentRss>http://bigtrapeze.com/2011/03/01/allow-remote-mysql-connections-to-an-aws-instance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using MySQL and CONCAT to build HTML</title>
		<link>http://bigtrapeze.com/2011/02/25/using-mysql-and-concat-to-build-html/</link>
		<comments>http://bigtrapeze.com/2011/02/25/using-mysql-and-concat-to-build-html/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 16:52:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://bigtrapeze.com/?p=132</guid>
		<description><![CDATA[I recently had to pull a list of IDs and names from a database, then wrap each in an &#8220; &#8221; tab for a dropdown. I realized quickly that this was both lame and inefficient, so I put MySQL&#8217;s CONCAT command to use. Assuming you have a table with an &#8220;ID&#8221; and &#8220;name&#8221; column, you [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had to pull a list of IDs and names from a database, then wrap each in an &#8220;<br />
&#8221; tab for a dropdown. I realized quickly that this was both lame and inefficient, so I put MySQL&#8217;s CONCAT command to use.</p>
<p>Assuming you have a table with an &#8220;ID&#8221; and &#8220;name&#8221; column, you could do it with MySQL much more quickly:</p>
<p>To produce</p>
<p><code>&lt;option value="31"&gt;John Q. Public&lt;/option&gt;</code></p>
<p>you could use</p>
<p><code>SELECT CONCAT('&lt;option value="', ID, '"&gt;', name, '&lt;/option&gt;') FROM People</code></p>
]]></content:encoded>
			<wfw:commentRss>http://bigtrapeze.com/2011/02/25/using-mysql-and-concat-to-build-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Change The Border On A TinyMCE Textarea</title>
		<link>http://bigtrapeze.com/2010/01/19/change-the-border-width-on-a-tinymce-textarea/</link>
		<comments>http://bigtrapeze.com/2010/01/19/change-the-border-width-on-a-tinymce-textarea/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 17:21:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[homepage]]></category>
		<category><![CDATA[homepost]]></category>

		<guid isPermaLink="false">http://bigtrapeze.com/?p=119</guid>
		<description><![CDATA[I couldn&#8217;t figure out how to change the borders on a TinyMCE textarea&#8211;the problem was TinyMCE converts your textareas to tables on the fly, which means all the CSS work you do for textarea goes unnoticed. Moxicode&#8217;s forums weren&#8217;t much help&#8211;here is the solution in two simple steps: 1. Find the skins folder for your [...]]]></description>
			<content:encoded><![CDATA[<p>I couldn&#8217;t figure out how to change the borders on a TinyMCE textarea&#8211;the problem was TinyMCE converts your textareas to tables on the fly, which means all the CSS work you do for <code>textarea</code> goes unnoticed. <a href="http://tinymce.moxiecode.com/punbb/">Moxicode&#8217;s forums</a> weren&#8217;t much help&#8211;here is the solution in two simple steps:</p>
<p>1. Find the skins folder for your theme, mine for example was the &#8220;Advanced&#8221; theme, under</p>
<p><code>"tiny_mce/themes/advanced/skins/default/"</code></p>
<p>2. Under <code>/* Layout */</code>, look for<code> ".defaultSkin table.mceLayout", </code>and you&#8217;ll probably see<code> "border-left:1px solid #ccc"</code>. That&#8217;s where you&#8217;ll want to make your changes. Make them to that line, as well as the <code>tr.mceFirst</code> and <code>tr.mceLast</code> lines, and you&#8217;ll have new borders on your textareas in TinyMCE.</p>
]]></content:encoded>
			<wfw:commentRss>http://bigtrapeze.com/2010/01/19/change-the-border-width-on-a-tinymce-textarea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

