title: Why do I get the error "Cannot store non-PrivateKeys" when creating an SSL Socket in Java?
body: <p>I am working on an older IBM iSeries (IBM-i, i5OS, AS/400, etc), with a Java 5 JVM (Classic, not ITJ J9) on O/S version V5R3M0.</p>
  
  <p>Here is the scenario in a nutshell:</p>
  
  <ol>
  <li>I created a key-store of type JKS using <a href="http://portecle.sourceforge.net/" rel="noreferrer">Portecle 1.7</a> (Note: I did try converting my key-store to JCEKS but that was rejected as an unsupported format, so it appears that JKS is the only option with the iSeries machine (at least the version I am on).</li>
  <li>I then created a key-pair and CSR and sent the CSR to Thawte to be signed.</li>
  <li>I imported the signed certificate from Thawte successfully using the PKCS#7 format to import the entire certificate chain, which included my certificate, the Thawte intermediary and the Thawte server root.</li>
  </ol>
  
  <p>This all worked as expected.</p>
  
  <p>However, when I ran up the JVM, configured properly to point to the store and supply it's password (which I have done in the past with self-signed certificates created in Portecle for testing), and try to start my web server on 443, I get the following security exception:</p>
  
  <pre><code>java.security.KeyStoreException: Cannot store non-PrivateKeys
  </code></pre>
  
  <p>Can anyone tell me where I went wrong, or what I should check next?</p>