title: Import certificate with private key programmatically
body: <p>I'm trying to use the HttpListener class in a C# application to have a mini webserver serve content over SSL.  In order to do this I need to use the httpcfg tool.  I have a .pfx file with my public and private key pair.  If I import this key pair manually using mmc into the local machine store, everything works fine.  However, if I import this key pair programmatically using the X509Store class, I am not able to connect to my mini webserver.  Note that in both methods the cert is getting imported to the MY store in LocalMachine. Oddly, I am able to view the certificate in mmc once I programmatically import it and when I view it, the UI indicates that a private key is also available for this certificate.</p>
  
  <p>Digging a little deeper, I notice that when I manually import the key pair, I can see a new file appear in <code>C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys</code>, but one does not appear when I import programmatically.  On a related note, when I delete a manually imported certificate, it does not remove the corresponding private key file from the previously mentioned directory.</p>
  
  <p>Ultimately, my question is this: When I programmatically add the certificate to the store, where is the private key being stored and why isn't it accessible to the HttpListener class (HttpApi)?</p>
  
  <p>Note that this question is slightly related but I don't think permissioning is the problem since this is all being done as the same Windows user:
  <a href="https://stackoverflow.com/questions/425688/how-to-set-read-permission-on-the-private-key-file-of-x-509-certificate-from-ne">How to set read permission on the private key file of X.509 certificate from .NET</a></p>