<?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"
	>

<channel>
	<title>/dev/klog &#187; Mac OS X</title>
	<atom:link href="http://www.devklog.net/category/apple/osx/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.devklog.net</link>
	<description>You better pipe that through your mind</description>
	<pubDate>Thu, 26 Jun 2008 17:11:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Generating SSL certificates that will make Firefox 3 happy</title>
		<link>http://www.devklog.net/2008/05/25/generating-ssl-certificates-that-will-make-firefox-3-happy/</link>
		<comments>http://www.devklog.net/2008/05/25/generating-ssl-certificates-that-will-make-firefox-3-happy/#comments</comments>
		<pubDate>Sun, 25 May 2008 13:07:20 +0000</pubDate>
		<dc:creator>Jean-François Roy</dc:creator>
		
		<category><![CDATA[Mac OS X]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[keychain]]></category>

		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.devklog.net/?p=116</guid>
		<description><![CDATA[Firefox 3 is annoyingly picky about SSL certificates, which has been an issue for people trying to access my Trac wiki or Subversion repository. I finally had enough and decided to nail the problem. So here are clear steps for generating SSL certificates that will make Firefox 3 happy.  I will be using Leopard&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox 3 is annoyingly picky about SSL certificates, which has been an issue for people trying to access my Trac wiki or Subversion repository. I finally had enough and decided to nail the problem. So here are clear steps for generating SSL certificates that will make Firefox 3 happy.  I will be using Leopard&#8217;s Certificate Assistant for most of the certificate work, with a bit of openssl at the end. The primary source of information I used to determine the requirements for SSL server certificates and signing certificates up in the chain is Mozilla&#8217;s <a href="http://www.mozilla.org/projects/security/pki/nss/tech-notes/tn3.html" title="All About Certificate Extensions" onclick="javascript:pageTracker._trackPageview ('/outbound/www.mozilla.org');">All About Certificate Extensions</a> technote.</p>
<p><span id="more-116"></span></p>
<h4>Creating a certificate authority</h4>
<p>Although I haven&#8217;t tested a self-signed CA certificate as the SSL server&#8217;s certifiate, reading around the web suggests it will not make Firefox 3 happy. Since it doesn&#8217;t cost all that much time to do it, let&#8217;s generate a certificate authority.</p>
<ol>
<li>Open Keychain Access</li>
<li>I&#8217;ve had issues with Certificate Assistant using my login keychain, so to avoid any problems, create a new keychain for certificates.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/menus_1.png" rel="lightbox" title="Create a Certificate Authority..."><img class="alignnone size-medium wp-image-117" style="vertical-align: top;" title="Create a Certificate Authority..." src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/menus_1-300x107.png" alt="Create a Certificate Authority..." width="300" height="107" /></a><br />
Use the <em>Create a Certificate Authority&#8230;</em> command from the <em>Keychain Access</em> &gt; <em>Certificate Assistant </em>menu.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/ca1.png" rel="lightbox" title="Create Your Certificate Authority"><img class="alignnone size-full wp-image-118" style="vertical-align: top;" title="Create Your Certificate Authority" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/ca1.png" alt="Create Your Certificate Authority" width="499" height="370" /></a><br />
Enter the name of the CA certificate, select <em>Self Signed Root CA</em> as the type and make sure the <em>Let me override defaults</em> checkbox is checked.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-1.png" rel="lightbox" title="Certificate Information Part 1"><img class="alignnone size-full wp-image-119" style="vertical-align: top;" title="Certificate Information Part 1" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-1.png" alt="Certificate Information Part 1" width="499" height="370" /></a><br />
Enter the desired serial number and validity period. Firefox 3 will actually remember certificate serial numbers and reject a new certificate with the same serial number as a previous certificate (coming from the same authority, that is), so make sure you&#8217;re keeping track of serial numbers.      </p>
<p>The <em>User Certificate Type</em> must be set to <em>SSL Server</em>.</p>
<p>The other settings are for generating a pretty CA web page to let people make certificate requests for your new authority (you may want to use that), and to sign your certificate invitation.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-2.png" rel="lightbox" title="Certificate Information Part 2"><img class="alignnone size-full wp-image-120" style="vertical-align: top;" title="Certificate Information Part 2" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-2.png" alt="Certificate Information Part 2" width="499" height="370" /></a><br />
Enter the basic contact information for the CA certificate. The <em>Name (Common Name)</em> field doesn&#8217;t have to be a valid domain name, since the CA certificate won&#8217;t be used by any server.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-3.png" rel="lightbox" title="Key Pair Information For This CA "><img class="alignnone size-full wp-image-121" style="vertical-align: top;" title="Key Pair Information For This CA " src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-3.png" alt="Key Pair Information For This CA " width="499" height="370" /></a><br />
The default values for this step are fine.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-4.png" rel="lightbox" title="Specify Key Pair Information For Users of This CA"><img class="alignnone size-full wp-image-122" style="vertical-align: top;" title="Specify Key Pair Information For Users of This CA" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-4.png" alt="Specify Key Pair Information For Users of This CA" width="499" height="370" /></a><br />
This step allows to specify default key pair settings for any leaf certificate you create with the CA certificate as the root. The default values are fine.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-5.png" rel="lightbox" title="Key Usage Extension For This CA"><img class="alignnone size-full wp-image-123" style="vertical-align: top;" title="Key Usage Extension For This CA" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-5.png" alt="Key Usage Extension For This CA" width="499" height="370" /></a><br />
The CA certificate must have a Key Usage Extension with at least the <em>Signature</em> and <em>Certificate Signing</em> capability bits set. If either one of those capabilities are not specified, Firefox 3 will reject any child certificate of the CA certificate.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-6.png" rel="lightbox" title="Key Usage Extension For Users of This CA"><img class="alignnone size-full wp-image-124" style="vertical-align: top;" title="Key Usage Extension For Users of This CA" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-6.png" alt="Key Usage Extension For Users of This CA" width="499" height="370" /></a><br />
This step allows to specify default key usage extension settings for any leaf certificate created with the CA certificate as the root. SSL server certificates must have at least the <em>Key Encipherment</em> and <em>Key Agreement</em> capability bits set. If either one of those capabilities are not specified, Firefox 3 will reject the certificate.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-7.png" rel="lightbox" title="Extended Key Usage Extension For This CA"><img class="alignnone size-full wp-image-125" style="vertical-align: top;" title="Extended Key Usage Extension For This CA" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-7.png" alt="Extended Key Usage Extension For This CA" width="499" height="370" /></a><br />
Although documentation suggests this may not be necessary, giving the CA certificate an extended key usage extension with at least the <em>SSL Server Authentication</em> capability bit set has no serious consequences and provides additional insurance that Firefox 3 will be happy. Note that the default value is <em>All</em>, which should include <em>SSL Server Authentication</em>, but again no harm done in being pedantic.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-8.png" rel="lightbox" title="Extended Key Usage Extension For Users of This CA"><img class="alignnone size-full wp-image-126" style="vertical-align: top;" title="Extended Key Usage Extension For Users of This CA" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-8.png" alt="Extended Key Usage Extension For Users of This CA" width="499" height="370" /></a><br />
This step allows to specify default extended key usage extension settings for any leaf certificate created with the CA certificate as the root. SSL server certificates must have at least the <em>SSL Server Authentication</em> capability bit set. If that capability is not specified, Firefox 3 will reject the certificate.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-9.png" rel="lightbox" title="Basic Constraints Extension For This CA"><img class="alignnone size-full wp-image-127" style="vertical-align: top;" title="Basic Constraints Extension For This CA" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-9.png" alt="Basic Constraints Extension For This CA" width="499" height="370" /></a><br />
The CA certificate must have a basic constraints extension with at least the <em>Use this certificate as a certificate authority</em> option specified. If it is not, Firefox 3 will reject  any child certificate of the CA certificate.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-10.png" rel="lightbox" title="Basic Constraints Extension For Users of This CA"><img class="alignnone size-full wp-image-128" style="vertical-align: top;" title="Basic Constraints Extension For Users of This CA" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-10.png" alt="Basic Constraints Extension For Users of This CA" width="499" height="370" /></a><br />
This step allows to specify default basic constraints extension settings for any leaf certificate created with the CA certificate as the root. SSL server certificates must not have the <em>Use this certificate as a certificate authority</em> option specified (while having a basic constraints extension). If the extension is missing or that option is specified, Firefox 3 will reject the certificate.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-11.png" rel="lightbox" title="Subject Alternate Name Extension For This CA"><img class="alignnone size-full wp-image-129" style="vertical-align: top;" title="Subject Alternate Name Extension For This CA" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-11.png" alt="Subject Alternate Name Extension For This CA" width="499" height="370" /></a><br />
Any certificate with the <em>SSL Server</em> type must have a subject alternate name extension specifying either the <em>dNSName</em> field or the <em>iPAddress</em> field. Obviously there are no special constraints on the value of either of those fields for the CA certificate.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-12.png" rel="lightbox" title="Subject Alternate Name Extension For Users of This CA"><img class="alignnone size-full wp-image-130" style="vertical-align: top;" title="Subject Alternate Name Extension For Users of This CA" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-12.png" alt="Subject Alternate Name Extension For Users of This CA" width="499" height="370" /></a><br />
Again, any certificate with the <em>SSL Server</em> type must have a subject alternate name extension specifying either the <em>dNSName</em> field or the <em>iPAddress</em> field. The value of those fields must match the domain name or IP address which clients will use to contact SSL servers using any child certificate of the CA certificate. Obviously, we will have to override this value when creating each such child certificate unless we&#8217;re creating them for the same server all the time. Nevertheless, Certificate Assistant requires a value to be specified to continue, so provide a reasonable default.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-13.png" rel="lightbox" title="Specify a Location For The Certificate"><img class="alignnone size-full wp-image-131" style="vertical-align: top;" title="Specify a Location For The Certificate" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-13.png" alt="Specify a Location For The Certificate" width="499" height="370" /></a><br />
Select the keychain in which the CA certificate will be stored. If you want browsers using Keychain Services to accept child certificates of the CA certificate, check the <em>On this machine, trust certificates signed by this CA</em> checkbox. Note that, as the label implies, this will affect the trust setting for the CA certificate for the entire machine, not just your specific system user. Consider the consequences of that choice carefully. It is possible to change trust settings on a per-user basis.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-14.png" rel="lightbox" title="Conclusion"><img class="alignnone size-full wp-image-132" style="vertical-align: top;" title="Conclusion" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-14.png" alt="Conclusion" width="499" height="370" /></a><br />
Success!</li>
</ol>
<p>We can finally appreciate the fruit of our labour. Double-clicking the CA certificate in Keychain Access will allow you to confirm that all the required settings, options and capabilities are properly configured. It should look like this:</p>
<p style="text-align: center;"><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-15.png" rel="lightbox" title="The CA certificate"><img class="alignnone size-full wp-image-133" title="The CA certificate" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-15.png" alt="The CA certificate" width="499" height="1004" /></a></p>
<h4>Creating a SSL server leaf certificate</h4>
<p>I will not repeat the entire sequence of operation presented for the CA certificate, but rather focus on the steps that are specific to the creation of a SSL server leaf certificate. Make sure to keep in mind the various restrictions mentioned above concerned leaf certificates, since we have to override the default values we specified during the creation of the CA certificate and Certificate Assistant is not nice enough to fill in those defaults  <img src='http://www.devklog.net/wordpress/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' /> .</p>
<ol>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/menu2.png" rel="lightbox" title="Create a Certificate..."><img class="alignnone size-full wp-image-134" style="vertical-align: top; margin: 5px;" title="Create a Certificate..." src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/menu2.png" alt="Create a Certificate..." width="500" height="178" /></a><br />
Use the <em>Create a Certificate&#8230;</em> command from the <em>Keychain Access</em> &gt; <em>Certificate Assistant</em> menu.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-16.png" rel="lightbox" title="Create Your Certificate"><img class="alignnone size-full wp-image-135" style="vertical-align: top;" title="Create Your Certificate" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-16.png" alt="Create Your Certificate" width="499" height="370" /></a><br />
Enter the domain name that clients will be using to access the SSL server as the certificate&#8217;s name, and choose <em>Leaf</em> as the certificate type. Make sure to check <em>Let me override defaults</em> since we need to edit some of the certificate&#8217;s settings from the defaults we specified earlier.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-21.png" rel="lightbox" title="Certificate Information Part 1"><img class="alignnone size-full wp-image-136" style="vertical-align: top;" title="Certificate Information Part 1" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-21.png" alt="Certificate Information Part 1" width="499" height="370" /></a><br />
Enter a serial number different than that of the CA certificate and different than that of any other leaf certificate you have already created, even if they were for the same domain. Firefox 3 checks and keeps track of certificate serial numbers and will reject a certificate re-using a serial number. Also make sure that the certificate type is set to <em>SSL Server</em>, otherwise Firefox 3 will reject the certificate.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-31.png" rel="lightbox" title="Certificate Information Part 2"><img class="alignnone size-full wp-image-137" style="vertical-align: top;" title="Certificate Information Part 2" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-31.png" alt="Certificate Information Part 2" width="499" height="370" /></a><br />
The <em>Name (Common Name)</em> field must match the domain clients will use to connect to the SSL server, otherwise Firefox 3 will reject the certificate.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-81.png" rel="lightbox" title="Choose An Issuer"><img class="alignnone size-full wp-image-142" style="vertical-align: top;" title="Choose An Issuer" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-81.png" alt="Choose An Issuer" width="499" height="370" /></a><br />
Select the CA certificate created earlier.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-41.png" rel="lightbox" title="Key Usage Extension"><img class="alignnone size-full wp-image-138" style="vertical-align: top;" title="Key Usage Extension" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-41.png" alt="Key Usage Extension" width="499" height="370" /></a><br />
SSL server certificates must have a key usage extension with the <em>Key Encipherment</em> and <em>Key Agreement</em> bits set. If they are not, Firefox 3 will reject the certificate.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-51.png" rel="lightbox" title="Extended Key Usage Extension"><img class="alignnone size-full wp-image-139" style="vertical-align: top;" title="Extended Key Usage Extension" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-51.png" alt="Extended Key Usage Extension" width="499" height="370" /></a><br />
SSL server certificates must have an extended key usage extension with the <em>SSL Server Authentication</em> bit set. If it is not, Firefox 3 will reject the certificate.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-61.png" rel="lightbox" title="Basic Constraints Extension"><img class="alignnone size-full wp-image-140" style="vertical-align: top;" title="Basic Constraints Extension" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-61.png" alt="Basic Constraints Extension" width="499" height="370" /></a><br />
SSL server certificates must have a basic constraints extension with the <em>Use this certificate as a certificate authority</em> option disabled.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-71.png" rel="lightbox" title="Subject Alternate Name Extension"><img class="alignnone size-full wp-image-141" style="vertical-align: top;" title="Subject Alternate Name Extension" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-71.png" alt="Subject Alternate Name Extension" width="499" height="370" /></a><br />
SSL server certificates must have a subject alternate name extension with either the <em>dNSName</em> field or the <em>iPAddress</em> field specified. The values for those fields should match what clients will use to connect to the SSL server. In order words, the value for the <em>dNSName</em> field should match the value of the <em>Name (Common Name)</em> field of the certificate (specified in step 4) and the value <em>iPAddress</em> field should match the IP address to which the <em>dNSName</em> domain resolves.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-91.png" rel="lightbox" title="Conclusion"><img class="alignnone size-full wp-image-143" style="vertical-align: top;" title="Conclusion" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-91.png" alt="Conclusion" width="499" height="370" /></a><br />
Success again!</li>
</ol>
<p>We can once more appreciate the fruit of our labour. Double-clicking the certificate in Keychain Access will allow you to confirm that all the required settings, options and capabilities are properly configured. It should look like this:</p>
<p style="text-align: center;"><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-101.png" rel="lightbox" title="The certificate"><img class="alignnone size-full wp-image-144" title="The certificate" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/picture-101.png" alt="The certificate" width="499" height="1004" /></a></p>
<h4>Going from the keychain to Apache</h4>
<p>As a common scenario, here&#8217;s the straightforward way to export certificates stored in a keychain in a format suitable for Apache&#8217;s mod_ssl.</p>
<ol>
<li>Select the desired certificate from the <em>Certificates</em> or <em>My Certificates</em> category in Keychain Access (with the containing keychain selected, of course). The certificate item should have a disclosure triangle which once expanded will reveal the certificate&#8217;s private key. Indeed, we need to export both the certificate and its private key.</li>
<li>Use the <em>File</em> &gt; <em>Export Items&#8230;</em> command.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/exporting.png" rel="lightbox" title="Navigation Services dialog for exporting a certificate"><img class="alignnone size-full wp-image-145" style="vertical-align: top;" title="Navigation Services dialog for exporting a certificate" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/exporting.png" alt="Navigation Services dialog for exporting a certificate" width="500" height="446" /></a><br />
Use the <em>Personal Information Exchange (.p12)</em> format to export the certificate.</li>
<li><a href="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/nopassword.png" rel="lightbox" title="No password"><img class="alignnone size-full wp-image-146" style="vertical-align: top;" title="No password" src="http://www.devklog.net/wordpress/wp-content/uploads/2008/05/nopassword.png" alt="No password" width="500" height="350" /></a><br />
Although you provide a password with which to encrypt the private key, since Apache requires it to be unencrypted in order to start automatically, simply don&#8217;t provide any password. You may want, however, to choose a secure export location, such as a private temporary folder that doesn&#8217;t get backed up by Time Machine or an encrypted disk image.</li>
<li>Open Terminal.</li>
<li>Run the following commands to export the certificate and the private key (unencrypted) to OpenSSL&#8217;s PEM format which mod_ssl requires.
<pre>openssl pkcs12 -in example.com.p12 -nokeys -nodes -out example.com.crt
openssl pkcs12 -in example.com.p12 -nocerts -nodes -out example.com.crtkey</pre>
</li>
</ol>
<p>All that&#8217;s left to do is ship out the .crt and .crtkey files to your SSL server and to securely delete all 3 files (.p12, .crt and .crtkey) from your local computer.</p>
<h4>Loose ends because Firefox 3 can&#8217;t bother to fully support Mac OS X</h4>
<p>When you connect with Firefox 3 to your SSL server with its shiny new certificates, Firefox 3 is still going to give you one of its famous gray error pages, stating that the certificate authority that signed the server&#8217;s certificate is not trusted. This is because, unlike <em>every other browser</em> for Mac OS X, Firefox can&#8217;t bother to use Keychain Services to verify certificate trust and therefore doesn&#8217;t know anything about the CA certificate stored in one of your keychains.</p>
<p>However this is a simple matter to fix. In the same error page, click on the <em>Or you can add an exception&#8230;</em> link, then on the <em>Add Exception</em> button. In the dialog that follows, first click on the <em>Get Certificate</em> button, make sure the <em>Permanently store this exception</em> checkbox is checked and finally click on the <em>Confirm Security Exception</em> button.</p>
<p>I&#8217;ll take this time to mention that that dialog is so poorly designed, with the <em>Cancel</em> button on the <em>right</em> of the dialog and of the &#8220;confirm action&#8221; button, contrary to Mac OS X HIG guidelines, not to mention the default button is that <em>Get Certificate</em> button which itself shouldn&#8217;t even be there – Firefox 3 should clearly fetch the certificate automatically. End of design commentary  <img src='http://www.devklog.net/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<p>After that, Firefox 3 will trust the certificate and you should be good to go. You could also export the CA certificate and add it to Firefox 3&#8217;s list of trusted roots, an exercise I leave to the reader.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.devklog.net/2008/05/25/generating-ssl-certificates-that-will-make-firefox-3-happy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Xcode 3.1 preview included in the iPhone SDK</title>
		<link>http://www.devklog.net/2008/03/06/xcode-31-preview-included-in-the-iphone-sdk/</link>
		<comments>http://www.devklog.net/2008/03/06/xcode-31-preview-included-in-the-iphone-sdk/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 03:03:11 +0000</pubDate>
		<dc:creator>Jean-François Roy</dc:creator>
		
		<category><![CDATA[Mac OS X]]></category>

		<category><![CDATA[Apple]]></category>

		<category><![CDATA[macosx]]></category>

		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://www.devklog.net/2008/03/06/xcode-31-preview-included-in-the-iphone-sdk/</guid>
		<description><![CDATA[Update: I initially had stated that LLVM was the future of Apple compiler technologies. This is the case in-so-far as I believe LLVM is the future of the gcc compiler backend. This is a personal blog and I&#8217;m obviously not speaking for anyone but myself.
While watching the iPhone SDK announcement video, I noticed some odd things [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> I initially had stated that LLVM was the future of Apple compiler technologies. This is the case in-so-far as I believe LLVM is the future of the gcc compiler backend. This is a personal blog and I&#8217;m obviously not speaking for anyone but myself.</p>
<p>While watching the iPhone SDK announcement video, I noticed some odd things in my beloved Xcode. Some UI elements were looking different. And indeed, the iPhone SDK includes a new version of Xcode (and many other dev tools) which may be of interest for anyone doing Mac OS X development. Some of the highlights:</p>
<ul>
<li>Brand-new &#8220;New Project&#8221; and &#8220;New File&#8221; dialogs. I really like them, and the new templates make more sense.</li>
<li>Multi-platform support. Each platform can provide its own set of tools and SDKs. This was obviously added to support the iPhone. So the big picture now is Platforms &gt; SDKs &gt; Architectures.</li>
<li>Preview of gcc-4.2 and llvm-gcc-4.2. I am really excited to check this two out, particularly the <a href="http://llvm.org/" title="LLVM" onclick="javascript:pageTracker._trackPageview ('/outbound/llvm.org');">LLVM</a> powered compiler, which brings to Mac OS X developers modern link-time optimization that Microsoft Visual Studio and Intel CC customers have enjoyed for many years now. LLVM is the future of gcc compiler technologies, and it&#8217;s great to start seeing that get out into a lot of people&#8217;s hands.</li>
<li>Improved support for conditional build settings (AKA per-architecture build settings).</li>
</ul>
<p>I hope to see the final version of Xcode 3.1 to be released at this year&#8217;s WWDC, if not some manner of new beta release.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.devklog.net/2008/03/06/xcode-31-preview-included-in-the-iphone-sdk/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CUDA for Mac OS X</title>
		<link>http://www.devklog.net/2008/02/13/cuda-for-mac-os-x/</link>
		<comments>http://www.devklog.net/2008/02/13/cuda-for-mac-os-x/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 14:49:38 +0000</pubDate>
		<dc:creator>Jean-François Roy</dc:creator>
		
		<category><![CDATA[Mac OS X]]></category>

		<category><![CDATA[Apple]]></category>

		<category><![CDATA[gpgpu]]></category>

		<category><![CDATA[nvidia]]></category>

		<guid isPermaLink="false">http://www.devklog.net/2008/02/13/cuda-for-mac-os-x/</guid>
		<description><![CDATA[CUDA is NVIDIA&#8217;s architecture and API for GPGPU – general purpose GPU programming. The fact is, those graphic cards are hugely powerful parallel computing units, and everyone stands to benefit by exploiting them to do far more than just outputting images to a screen.
Well today, NVIDIA made CUDA available for Mac OS X. This is [...]]]></description>
			<content:encoded><![CDATA[<p>CUDA is NVIDIA&#8217;s architecture and API for GPGPU – general purpose GPU programming. The fact is, those graphic cards are hugely powerful parallel computing units, and everyone stands to benefit by exploiting them to do far more than just outputting images to a screen.</p>
<p>Well today, <a href="http://www.nvidia.com/object/cuda_get.html#macos" onclick="javascript:pageTracker._trackPageview ('/outbound/www.nvidia.com');">NVIDIA made CUDA available for Mac OS X</a>. This is a sign that times are changing for Apple when they start to make such a kind of inroad. And of course, everyone in the (probably small) Mac HPC business and in the scientific community is probably very happy about this.</p>
<p>So if you own NVIDIA hardware, go grab it and give it a try!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.devklog.net/2008/02/13/cuda-for-mac-os-x/feed/</wfw:commentRss>
		</item>
		<item>
		<title>One of the best Mac OS X application has just gotten better</title>
		<link>http://www.devklog.net/2007/11/30/one-of-the-best-mac-os-x-application-has-just-gotten-better/</link>
		<comments>http://www.devklog.net/2007/11/30/one-of-the-best-mac-os-x-application-has-just-gotten-better/#comments</comments>
		<pubDate>Sat, 01 Dec 2007 00:24:39 +0000</pubDate>
		<dc:creator>Jean-François Roy</dc:creator>
		
		<category><![CDATA[Mac OS X]]></category>

		<category><![CDATA[applications]]></category>

		<guid isPermaLink="false">http://www.devklog.net/2007/11/30/one-of-the-best-mac-os-x-application-has-just-gotten-better/</guid>
		<description><![CDATA[Omni released the first public beta of OmniGraffle Pro today. Version 5 boasts an impressive list of new features and refinements, such as GraphViz powered diagram layout, tables, bezier curves and better Visio and PDF import and export.
Give it a try. As far as I&#8217;m concerned, my only deception so far is not being able [...]]]></description>
			<content:encoded><![CDATA[<p>Omni released the first public beta of <a href="http://www.omnigroup.com/applications/omnigraffle/beta/" title="OmniGraffle 5 Beta" onclick="javascript:pageTracker._trackPageview ('/outbound/www.omnigroup.com');">OmniGraffle Pro</a> today. Version 5 boasts an impressive list of new features and refinements, such as <a href="http://www.graphviz.org" title="GraphViz" onclick="javascript:pageTracker._trackPageview ('/outbound/www.graphviz.org');">GraphViz</a> powered diagram layout, tables, bezier curves and better Visio and PDF import and export.</p>
<p>Give it a try. As far as I&#8217;m concerned, my only deception so far is not being able to buy a license already.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.devklog.net/2007/11/30/one-of-the-best-mac-os-x-application-has-just-gotten-better/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.622 seconds -->
