tomcatcon apache tomcat and tls mark thomas
play

TomcatCon Apache Tomcat and TLS Mark Thomas TM Introduction TM - PowerPoint PPT Presentation

T M TomcatCon Apache Tomcat and TLS Mark Thomas TM Introduction TM Why This Presentation? L o t s o f q u e s t i o n s a b o u t T L S o n t h e T o m c a t m a i l i n g l i s t s It is clear from the questions many folks dont


  1. T M TomcatCon Apache Tomcat and TLS Mark Thomas

  2. TM Introduction

  3. TM Why This Presentation? ● L o t s o f q u e s t i o n s a b o u t T L S o n t h e T o m c a t m a i l i n g l i s t s ● It is clear from the questions many folks don’t understand how TLS works ● Debugging something you don’t understand is much harder than debugging something you do understand ● I’ll use SSL and TLS interchangeably (as do the Tomcat docs)

  4. TM Agenda ● Cryptography basics ● TLS ● Configuring Tomcat for TLS ● Questions

  5. TM Cryptography Basics

  6. TM Cryptography Basics: Symmetric Encryption ● Use the same key to encrypt and decrypt Plain Cipher Text Text Private Key Cipher Plain Text Text Private Key

  7. TM Cryptography Basics: Asymmetric Encryption ● Pair of keys, A and B I f k e y A i s u s e d t o e n c r y p t , k e y B m u s t b e u s e d t o d e c r y p t – If key B is used to encrypt, key A must be used to decrypt – ● Very difficult to determine one key from the other ● One key is used as the “Public Key” This key is made widely available to the general public – ● One key is used as the “Private Key” This key must be protected –

  8. TM Cryptography Basics: Asymmetric Encryption ● Use different keys to encrypt and decrypt Plain Cipher Text Text Public Key Cipher Plain Text Text Private Key

  9. TM Cryptography Basics: Asymmetric Encryption ● You can use the keys either way around Plain Cipher Text Text Private Key Cipher Plain Text Text Public Key

  10. TM Cryptography Basics: Hash Functions ● Generate a fingerprint (hash) for the given input ● A small change in the input results in a large change in the hash ● Very difficult to generate an input for a given hash Plain Hash Text Hash Function

  11. TM Cryptography Basics: Digital Signatures ● Proves a document was sent by a particular entity Plain Enc. Hash Hash Text Hash Hash Private Key Function Plain Enc. Digitally Text Hash Signed

  12. TM Cryptography Basics: Digital Signatures ● Validating a digital signature Plain Hash Hash Text Hash Function Enc. Hash Hash Public Key

  13. TM Cryptography Basics: Digital Signatures ● If the hashes match then: The public key decrypted the digital signature – Therefore the private key must have created the digital signature – Therefore the recipient can be certain that the owner of the private – key sent the document ● Determining who owns the private key is the next problem

  14. TM Cryptography Basics: Certificates ● Proves a public key is associated with a given identity ID Enc. Public Hash Hash Hash Key Hash CA Private Key Function ID Enc. Cert- Public Hash ificate Key

  15. TM Cryptography Basics: Certificates ● To validate the Certificate Authority’s signature, you need to be able to link their public key to their identify ● You do this with a certificate too ● This builds a trust chain ● At the top of the chain is the root certificate from a root certificate authority ● There are multiple root certificate authorities

  16. TM Cryptography Basics: Root Certificates ● Root certificates are self-signed ● Some other mechanism is required to trust root certificates Usually installed by the operating system – You can manually validate them by checking them against the – published versions on the CA’s web site Self Signed Root My My My CA Cert. Cert. Cert. Cert. Signed By Signed By Signed By

  17. TM TLS

  18. TM TLS ● TLS connections are initiated by a handshake ● Handshake Mandatory steps – Optional steps – ● This section considers the common case

  19. TM TLS: Handshake Starting Point ● Server Private key – f c () f(x) CA S f s () Certificate – P u b l i c K e y ● ID (domain name) ● List of supported algorithms – ● Client List of trusted (Root) CAs – List of supported algorithms –

  20. TM TLS: Handshake Step 1: ClientHello ● Client generates random number f c () f(x) CA S f s () ● Client sends message to server R c Client’s random number – Client’s supported algorithms –

  21. TM TLS: Handshake Step 2: ServerHello ● Server generates random number f c () f(x) CA S f s () f s () f c () f(x) ● Server compares algorithms Selects appropriate – R S f A () R c R c algorithms ● Server sends message to client Server’s random number – Selected algorithms –

  22. TM TLS: Handshake Step 3: Certificate ● Server sends message to client f c () f(x) CA S f s () f s () f c () f(x) Server’s certificate – ● Client validates server R S f A () R c R c certificate R S f A ()

  23. TM TLS: Handshake Step 6: ServerHelloDone ● Server sends message to client f c () f(x) CA S f s () f s () f c () f(x) No content – R S f A () R c R c S R S f A ()

  24. TM TLS: Handshake Step 8: ClientKeyExchange ● Client generates pre-master secret f c () f(x) CA S f s () f s () f c () f(x) ● Client encrypts PMS with server’s public key R S f A () R c R c S ● Client sends message to server R S f A () Encrypted PMS – enc PMS PMS

  25. TM TLS: Handshake Step 10: ChangeCipherSpec ● Client creates master secret R c + R s + PMS – f c () f(x) CA S f s () f s () f c () f(x) ● Cilent switches to encrypted mode Algorithm agreed in step 2 – R S f A () R c R c S Symmetric encryption with MS – ● Client sends message to server enc R S f A () PMS – No content enc PMS PMS MS

  26. TM TLS: Handshake Step 11: Finished ● Client has completed TLS handshake f c () f(x) CA S f s () f s () f c () f(x) ● Client sends message to server R S f A () R c R c S No content – enc R S f A () PMS enc PMS PMS MS

  27. TM TLS: Handshake Step 12: ChangeCipherSpec ● Server decrypts PMS ● Server creates master secret f c () f(x) CA S f s () f s () f c () f(x) R c + R s + PMS – Server switches to encrypted – R S f A () R c R c S mode Algorithm agreed in step 2 – enc MS R S f A () PMS PMS Symmetric encryption with MS – ● Server sends message to client enc PMS PMS No content – MS

  28. TM TLS: Handshake Step 13: Finished ● Server has completed TLS handshake f c () f(x) CA S f s () f s () f c () f(x) ● Server sends message to client R S f A () R c R c S No content – enc MS R S f A () PMS PMS enc PMS PMS MS

  29. TM TLS: Encrypted Communication ● Algorithm agreed in step 2 ● Symmetric f c () f(x) CA S f s () f s () f c () f(x) ● Use Master Secret as key R S f A () R c R c S enc MS R S f A () PMS PMS enc PMS PMS MS

  30. TM TLS: Extensions ● Client certificate authentication Client authenticates to server with a – f c () f(x) CA S f s () f s () f c () certificate f(x) ● Server Name Indication R S f A () R c Client tells server which host is wants to – R c S connect to and server sends appropriate certificate (virtual hosting) enc MS R S f A () PMS ● Application Layer Protocol Negotiation PMS Client and server agree protocol to for – encrypted communication during enc PMS PMS handshake MS

  31. TM Configuring Tomcat for TLS

  32. TM Requirements ● Private key ● Server certificate ● Certificate chain ● Configuration in server.xml

  33. TM File Formats ● .p12 (PKCS12) ● .pem / .crt / .cer / .key Binary – ASCII – Key, cert or chain – Key, certificate or chain – ● .jks / .keystore ● .der Binary – Binary form of .pem – Java specific – ● .p7b (PKCS7) Key, cert or chain – ASCII – Cert and chain only –

  34. TM Which Format Do I Need? ● It depends… ● Tomcat 7 or 8, BIO or NIO JSSE implementation, JSSE configuration – Keystore – PKCS12 with Java 7+ – ● Tomcat 7 or 8 APR/native OpenSSL implementation, OpenSSL configuration – PEM –

  35. TM Which Format Do I Need? ● Tomcat 8.5 and 9, NIO and NIO2 KeyStore, PKCS12 or PEM – JSSE or OpenSSL for configuration – JSSE or OpenSSL for implementation – Can’t mix JSSE and OpenSSL attributes in a single configuration – ● Tomcat 8.5 and 9, APR/native PEM – OpenSSL implementation and OpenSSL configuration –

  36. TM Tomcat 7 or 8: BIO or NIO < C o n n e c t o r protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" SSLEnabled="true" scheme="https" secure="true" sslProtocol="TLS" keystoreFile="${catalina.base}/conf/localhost.jks" keystorePass="changeit" />

  37. TM Tomcat 7 or 8: APR/native <Connector protocol="org.apache.coyote.http11.Http11AprProtocol" port="8443" maxThreads="200" SSLEnabled="true" scheme="https" secure="true" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2" SSLCertificateFile="/usr/local/ssl/server.crt" SSLCertificateKeyFile="/usr/local/ssl/server.pem" SSLVerifyClient="optional" />

  38. TM Changes in Tomcat 8.5 ● Tomcat 7 / Tomcat 8 1 Connector, 1 Hostname, 1 certificate – ● Tomcat 8.5 / Tomcat 9 1 Connector, 1 or more Hostnames – 1 Hostname, 1 or more certificates (different types) – ● Tomcat 8 style configuration is supported but deprecated Connector level attributes are equivalent to the default TLS Host –

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend