Author: markt
Date: Wed Mar 30 19:30:20 2016
New Revision: 1737157

URL: http://svn.apache.org/viewvc?rev=1737157&view=rev
Log:
Add the code (commented out else it will cause problems on systems without the 
method) to set the certificate chain when using NIO/NIO2 + OpenSSL + JSSE config

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java

Modified: 
tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java?rev=1737157&r1=1737156&r2=1737157&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java 
Wed Mar 30 19:30:20 2016
@@ -322,12 +322,20 @@ public class OpenSSLContext implements o
             } else {
                 X509KeyManager keyManager = chooseKeyManager(kms);
                 String alias = certificate.getCertificateKeyAlias();
-                X509Certificate certificate = 
keyManager.getCertificateChain(alias)[0];
+                X509Certificate[] chain = 
keyManager.getCertificateChain(alias);
                 PrivateKey key = keyManager.getPrivateKey(alias);
                 StringBuilder sb = new StringBuilder(BEGIN_KEY);
                 sb.append(Base64.getMimeEncoder(64, new byte[] 
{'\n'}).encodeToString(key.getEncoded()));
                 sb.append(END_KEY);
-                SSLContext.setCertificateRaw(ctx, certificate.getEncoded(), 
sb.toString().getBytes(StandardCharsets.US_ASCII), SSL.SSL_AIDX_RSA);
+                SSLContext.setCertificateRaw(ctx, chain[0].getEncoded(), 
sb.toString().getBytes(StandardCharsets.US_ASCII), SSL.SSL_AIDX_RSA);
+                /*
+                 * Uncomment the code block below once there has been a 
tc-native
+                 * release with this method and the minimum tc-native version
+                 * has been incremented.
+                for (int i = 1; i < chain.length; i++) {
+                    SSLContext.addChainCertificateRaw(ctx, 
chain[i].getEncoded());
+                }
+                */
             }
             // Client certificate verification
             int value = 0;



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to