<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">jlefort</title><subtitle type="html" /><id>http://blogs.technet.com/b/jlefort/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/jlefort/" /><link rel="self" type="application/atom+xml" href="http://blogs.technet.com/b/jlefort/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2012-11-15T08:50:00Z</updated><entry><title>Certificates are truly certifiable</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/jlefort/archive/2012/11/15/certificates-are-truly-certifiable.aspx" /><id>http://blogs.technet.com/b/jlefort/archive/2012/11/15/certificates-are-truly-certifiable.aspx</id><published>2012-11-15T15:50:00Z</published><updated>2012-11-15T15:50:00Z</updated><content type="html">&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;&lt;span style="color: #2e74b5;"&gt;&lt;span style="font-family: Calibri Light;"&gt;Making certificate generation a bit easier for us Lync folks&amp;hellip;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1&gt;&lt;span style="color: #2e74b5;"&gt;&lt;span style="font-family: Calibri Light;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Ever notice that sometimes the one-liner in the documentation turns out to be the thing that takes the longest? I am going to try and address one of those scenarios with my latest (admittedly way belated) post. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Back in the old days (read: &amp;ldquo;the OCS era&amp;rdquo;), if you had to generate a certificate for another server like a reverse proxy (ISA/TMG), the approach most people seemed to take was &amp;ldquo;I will request and import the certificate in Windows Server 2003 (IIS 6.x), then export the results to the server that needs it&amp;rdquo;. That worked. Really well. Unfortunately that little piece of magic disappeared in Windows Server 2008 (IIS 7) &amp;ndash; or at least it got well enough hidden that many of my customers (and me) could no longer find it. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Needless to say, a bit of enhanced stress usually bubbled up the first time one came across this scenario in Windows 2008 (and then you went ahead and found an IIS 6 box). Lately however, many customers are getting rid of the last IIS 6 box because Windows 2003 left mainstream support in the middle of 2010. That means the stress comes back to visit. This results in the &amp;ldquo;Help&amp;rdquo; phone call / email / IM. To avoid that next call if possible, I put together this little cookbook to allow you to obtain a certificate quickly and easily from within a Windows Server 2008 / R2 box. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;My customers have typically used this approach to request / import and assign certificates for reverse proxy (TMG) servers in Lync 2010/2013 as well as the new Office Web Apps server used with Lync / Exchange and SharePoint 2013. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;In my example I am assuming you are running Windows Server 2008 or 2008 R2. I haven&amp;rsquo;t had to try it yet on 2012, but I think all should be okay. Famous last words (read: &amp;ldquo;Neville Chamberlain&amp;rdquo;).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Here is my approach:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;1.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;First off, you will need to create an INF file containing the important details for your server (in my example I am using an Office Web Apps server called LitWebApps.litware.com). You will need to save the INF to a known path for use in the next step.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;The template for the INF is the text below &amp;nbsp;(the parts you will need to update for your server are &lt;strong&gt;BOLD&lt;/strong&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;[Version] &lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;Signature="$Windows NT$ &lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;[NewRequest]&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;Subject = "&lt;strong&gt;CN=LitWebApps.litware.com&lt;/strong&gt;" ; FQDN of server&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;Exportable = TRUE ; Private key is exportable&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;KeyLength = 2048&amp;nbsp; ;can be 512, 1024, 2048,4096&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;KeySpec = 1 ; Key Exchange&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;KeyUsage = 0xA0 ; Digital Signature, Key Encipherment&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;MachineKeySet = True ;must be true for computer accounts&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;ProviderName = "Microsoft RSA SChannel Cryptographic Provider"&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;ProviderType = 12&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;RequestType = CMC&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;[RequestAttributes]&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;CertificateTemplate = WebServer &lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;&lt;span style="font-size: small;"&gt;SAN="dns=&lt;strong&gt;litwebapps.litware.com&lt;/strong&gt;"&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;2.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Once you have saved the INF, you create the certificate request by running certreq with the &amp;ldquo;&amp;ndash;new&amp;rdquo; parameter as in the following screen shot. This will result in a REQ file being created in the path you choose (in my case, I just put both the INF and the resulting REQ on the desktop)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-81/2045.New.png"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-81/2045.New.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;The REQ (request) file needs to be sent to a certificate authority.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;3.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;If you are using a third party (i.e. non-Microsoft) CA, submit the request file to your CA and have them create the certificate. That certificate will get accepted with the procedure in the next step. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;If you are using a Windows Enterprise CA, submit the REQ via certreq with the &amp;ldquo;&amp;ndash;submit&amp;rdquo; parameter. You might be prompted to select the CA you want to issue the certificate:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-81/1830.submit.png"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-81/1830.submit.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;When complete, you will see information on screen similar to below. This will tell you the Windows CA has issued the certificate, and it's ID. If this fails, you might want to see if you have autoenroll&amp;nbsp;or support for SAN values enabled on the CA&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-81/4276.submit2.png"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-81/4276.submit2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;4.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;At this point, whether you use a Microsoft CA or a third party CA, you have a certificate &amp;ldquo;in hand&amp;rdquo;, but you will need to accept it to get the private key association. You do that with certreq and the &amp;ldquo;&amp;ndash;accept&amp;rdquo; parameter: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-81/6472.accept.png"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-81/6472.accept.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&amp;nbsp;Once accepted, the certificate gets placed in the local computer store, ready for use. In other words, you are done!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-81/8637.Store.png"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-81/8637.Store.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Once you are set up to do this, the process is easier than the old IIS6 mechanism (in my mind anyway).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;As an added plus your security team will probably like this as approach as the private key is only on the server that needs it, instead of being on the requestor and the actual target. &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Hopefully this helps you to get through a certificate request scenario a bit quicker. In any case, I plan to start putting up some more Lync fixated content in the near future, time permitting.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3532751" width="1" height="1"&gt;</content><author><name>a8675309</name><uri>http://blogs.technet.com/joelefort_4000_hotmail.com/ProfileUrlRedirect.ashx</uri></author><category term="Office Web Apps" scheme="http://blogs.technet.com/b/jlefort/archive/tags/Office+Web+Apps/" /><category term="Reverse Proxy" scheme="http://blogs.technet.com/b/jlefort/archive/tags/Reverse+Proxy/" /><category term="Certificates" scheme="http://blogs.technet.com/b/jlefort/archive/tags/Certificates/" /><category term="Lync" scheme="http://blogs.technet.com/b/jlefort/archive/tags/Lync/" /><category term="PKI" scheme="http://blogs.technet.com/b/jlefort/archive/tags/PKI/" /></entry></feed>