Difference between revisions of "TLS / SSL"

From Things and Stuff Wiki
Jump to navigation Jump to search
 
(10 intermediate revisions by the same user not shown)
Line 16: Line 16:
 
* YouTube: [https://www.youtube.com/watch?v=nTrghQWRXH0 DEFCON 19: SSL And The Future Of Authenticity] - Moxie Marlinspike, 2011
 
* YouTube: [https://www.youtube.com/watch?v=nTrghQWRXH0 DEFCON 19: SSL And The Future Of Authenticity] - Moxie Marlinspike, 2011
  
== Specs ==
+
=== Specs ===
 
some rfcs..
 
some rfcs..
 
* http://tools.ietf.org/html/rfc2712 - Addition of Kerberos Cipher Suites to Transport Layer Security (TLS)
 
* http://tools.ietf.org/html/rfc2712 - Addition of Kerberos Cipher Suites to Transport Layer Security (TLS)
Line 23: Line 23:
 
* http://tools.ietf.org/html/rfc6091 - Using OpenPGP Keys for Transport Layer Security (TLS) Authentication
 
* http://tools.ietf.org/html/rfc6091 - Using OpenPGP Keys for Transport Layer Security (TLS) Authentication
 
* http://tools.ietf.org/html/rfc6125 - Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)
 
* http://tools.ietf.org/html/rfc6125 - Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)
 +
 +
 +
* [https://tls.ulfheim.net/ The Illustrated TLS Connection: Every Byte Explained] - In this demonstration a client has connected to a server, negotiated a TLS 1.2 session, sent "ping", received "pong", and then terminated the session. [https://news.ycombinator.com/item?id=18200749]
 +
 +
* http://www.ecnmag.com/articles/2015/01/ssl-tls-handshake [https://news.ycombinator.com/item?id=8960789]
 +
 +
  
 
* https://briansmith.org/browser-ciphersuites-01.html [https://news.ycombinator.com/item?id=6348468]
 
* https://briansmith.org/browser-ciphersuites-01.html [https://news.ycombinator.com/item?id=6348468]
 +
 +
 
* http://op-co.de/blog/posts/android_ssl_downgrade/
 
* http://op-co.de/blog/posts/android_ssl_downgrade/
 +
 +
 
* https://news.ycombinator.com/item?id=6733806
 
* https://news.ycombinator.com/item?id=6733806
  
* http://www.ecnmag.com/articles/2015/01/ssl-tls-handshake [https://news.ycombinator.com/item?id=8960789]
 
  
  
 +
 +
==== ESNI ====
 
* [https://blog.mozilla.org/security/2018/10/18/encrypted-sni-comes-to-firefox-nightly/ Encrypted SNI Comes to Firefox Nightly | Mozilla Security Blog] - [https://news.ycombinator.com/item?id=18250151]
 
* [https://blog.mozilla.org/security/2018/10/18/encrypted-sni-comes-to-firefox-nightly/ Encrypted SNI Comes to Firefox Nightly | Mozilla Security Blog] - [https://news.ycombinator.com/item?id=18250151]
  
* [https://tls.ulfheim.net/ The Illustrated TLS Connection: Every Byte Explained] - In this demonstration a client has connected to a server, negotiated a TLS 1.2 session, sent "ping", received "pong", and then terminated the session. [https://news.ycombinator.com/item?id=18200749]
 
  
== Guides ==
+
==== Encrypted Client Hello (ECH) ====
 +
* [https://blog.mozilla.org/en/products/firefox/encrypted-hello/ Say (an encrypted) hello to a more private internet]
 +
 
 +
* [https://support.mozilla.org/en-US/kb/understand-encrypted-client-hello Understand Encrypted Client Hello (ECH) | Firefox Help]
 +
 
 +
* [https://blog.cloudflare.com/encrypted-client-hello/ Good-bye ESNI, hello ECH!]
 +
 
 +
* YouTube: [https://www.youtube.com/watch?v=vKc1w58nlvw Encrypted Client Hello A New Attempt At Web Privacy]
 +
 
 +
=== Guides ===
 
* http://erik.io/blog/2013/06/08/a-basic-guide-to-when-and-how-to-deploy-https/
 
* http://erik.io/blog/2013/06/08/a-basic-guide-to-when-and-how-to-deploy-https/
  
Line 53: Line 73:
  
 
* http://www.mysqlperformanceblog.com/2013/10/10/mysql-ssl-performance-overhead/
 
* http://www.mysqlperformanceblog.com/2013/10/10/mysql-ssl-performance-overhead/
 +
 +
 +
=== HTTPS ===
 +
* http://tools.ietf.org/html/rfc2818 - HTTP Over TLS
 +
* https://en.wikipedia.org/wiki/HTTPS
 +
 +
* https://www.tbray.org/ongoing/When/201x/2012/12/02/HTTPS - basic intro
 +
* [http://www.imperialviolet.org/2012/07/19/hope9talk.html Living with HTTPS] (19 Jul 2012)
 +
 +
* http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html
 +
* [http://blog.filepicker.io/post/29422604907/improved-https-performance-with-early-ssl-termination Improved HTTPS Performance with Early SSL Termination]
 +
 +
* https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security - force HTTPS
 +
* https://www.scantosecure.com/blog/fencing-your-ssl-errors-with-hsts
 +
* http://blog.nvisium.com/2014/04/is-your-site-hsts-enabled.html [https://news.ycombinator.com/item?id=7646215]
 +
 +
* http://unhandledexpression.com/2013/01/25/5-easy-tips-to-accelerate-ssl/ [http://news.ycombinator.com/item?id=5115834]
 +
 +
* http://notary.icsi.berkeley.edu/
 +
** http://notary.icsi.berkeley.edu/trust-tree/
 +
 +
* https://www.eff.org/https-everywhere
 +
** https://www.eff.org/deeplinks/2012/12/end-year-blog-post-2012-https-rise
 +
 +
See [[HTTP#SSL]]
 +
 +
* https://news.ycombinator.com/item?id=10988948
 +
 +
 +
=== PFS ===
 +
* http://en.wikipedia.org/wiki/Perfect_forward_secrecy
 +
 +
* http://news.netcraft.com/archives/2013/06/25/ssl-intercepted-today-decrypted-tomorrow.html
 +
 +
* http://baudehlo.wordpress.com/2013/06/24/setting-up-perfect-forward-secrecy-for-nginx-or-stud/
 +
 +
* https://news.ycombinator.com/item?id=5955866
 +
 +
=== CRL ===
 +
* https://isc.sans.edu/crls.html
 +
 +
=== DANE ===
 +
* https://datatracker.ietf.org/wg/dane/charter/
 +
 +
=== HPKP ===
 +
* https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning
 +
 +
* http://news.netcraft.com/archives/2016/03/22/secure-websites-shun-http-public-key-pinning.html [https://news.ycombinator.com/item?id=11336317]
 +
  
 
== Software ==
 
== Software ==
Line 90: Line 159:
 
* https://www.imperialviolet.org/2015/10/17/boringssl.html [https://news.ycombinator.com/item?id=10420328]
 
* https://www.imperialviolet.org/2015/10/17/boringssl.html [https://news.ycombinator.com/item?id=10420328]
  
== Analysis ==
 
* https://ssldecoder.org/
 
  
* https://certificatemonitor.org/
+
== Tools ==
 +
* [https://www.ssllabs.com/ssltest/ SSL Server Test] - This free online service performs a deep analysis of the configuration of any SSL web server on the public Internet.
  
* https://ma.ttias.be/certdiff/
 
  
=== Local certificates ===
+
* [http://www.whynopadlock.com/ Why No Padlock?] - This web based tool will check a secure (https://) URL for the following items: Valid SSL Certificate (checks expiration date, properly installed intermediate certificate, URL matches the certificate domain, and displays the SSL Issuing company. All image, css, and javascript calls on the page are done so securely. Checks each linked css file to make sure any image calls are also secure. Outputs any insecure calls, along with the file (referrer) that made the insecure call. Verifies all third party SSL calls also have a valid and properly installed SSL certificate.
* https://github.com/FiloSottile/mkcert - A simple zero-config tool to make locally trusted development certificates with any names you'd like.
 
  
=== CA ===
 
* https://github.com/OpenVPN/easy-rsa - a CLI utility to build and manage a PKI CA. In laymen's terms, this means to create a root certificate authority, and request and sign certificates, including sub-CAs and certificate revocation lists (CRL).
 
  
== HTTPS ==
+
* [https://github.com/mikecardwell/sslScanner  sslScanner] - Scan SSL based TCP services, ips, ports and network ranges to obtain certificate expiry data. Get automated alerts about certificates expiring
* http://tools.ietf.org/html/rfc2818 - HTTP Over TLS
 
* https://en.wikipedia.org/wiki/HTTPS
 
  
* https://www.tbray.org/ongoing/When/201x/2012/12/02/HTTPS - basic intro
 
* [http://www.imperialviolet.org/2012/07/19/hope9talk.html Living with HTTPS] (19 Jul 2012)
 
  
* http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html
+
* [https://www.sslshopper.com/ssl-converter.html SSL Converter] - convert SSL certificates to and from different formats such as pem, der, p7b, and pfx
* [http://blog.filepicker.io/post/29422604907/improved-https-performance-with-early-ssl-termination Improved HTTPS Performance with Early SSL Termination]
+
* [http://www.cert-depot.com/ Certificate Depot] - Create your self-signed SSL certificate instantly and for free.
  
* https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security - force HTTPS
 
* https://www.scantosecure.com/blog/fencing-your-ssl-errors-with-hsts
 
* http://blog.nvisium.com/2014/04/is-your-site-hsts-enabled.html [https://news.ycombinator.com/item?id=7646215]
 
  
* http://unhandledexpression.com/2013/01/25/5-easy-tips-to-accelerate-ssl/ [http://news.ycombinator.com/item?id=5115834]
+
* https://gist.github.com/bretwalker/5420652
  
* http://notary.icsi.berkeley.edu/
 
** http://notary.icsi.berkeley.edu/trust-tree/
 
  
* https://www.eff.org/https-everywhere
+
=== Analysis ===
** https://www.eff.org/deeplinks/2012/12/end-year-blog-post-2012-https-rise
+
* https://ssldecoder.org/
  
See [[HTTP#SSL]]
+
* https://certificatemonitor.org/
  
* https://news.ycombinator.com/item?id=10988948
+
* https://ma.ttias.be/certdiff/
 
 
=== CSP ===
 
* https://en.wikipedia.org/wiki/Content_Security_Policy
 
 
 
=== Tools ===
 
* [https://www.ssllabs.com/ssltest/ SSL Server Test] - This free online service performs a deep analysis of the configuration of any SSL web server on the public Internet.
 
 
 
* [http://www.whynopadlock.com/ Why No Padlock?] - This web based tool will check a secure (https://) URL for the following items: Valid SSL Certificate (checks expiration date, properly installed intermediate certificate, URL matches the certificate domain, and displays the SSL Issuing company. All image, css, and javascript calls on the page are done so securely. Checks each linked css file to make sure any image calls are also secure. Outputs any insecure calls, along with the file (referrer) that made the insecure call. Verifies all third party SSL calls also have a valid and properly installed SSL certificate.
 
 
 
* [https://github.com/mikecardwell/sslScanner  sslScanner] - Scan SSL based TCP services, ips, ports and network ranges to obtain certificate expiry data. Get automated alerts about certificates expiring
 
  
* [https://www.sslshopper.com/ssl-converter.html SSL Converter] - convert SSL certificates to and from different formats such as pem, der, p7b, and pfx
 
* [http://www.cert-depot.com/ Certificate Depot] - Create your self-signed SSL certificate instantly and for free.
 
  
* https://gist.github.com/bretwalker/5420652
 
  
 
== Certificates ==
 
== Certificates ==
See also [[HTTP#SSL]]
+
* http://en.wikipedia.org/wiki/X.509
  
* http://en.wikipedia.org/wiki/X.509
 
  
 
* [http://kb.wisc.edu/page.php?id=18922 SSL Certificate Types and Purposes]
 
* [http://kb.wisc.edu/page.php?id=18922 SSL Certificate Types and Purposes]
 +
 
* https://www.globalsign.com/ssl-information-center/types-of-ssl-certificate.html
 
* https://www.globalsign.com/ssl-information-center/types-of-ssl-certificate.html
 +
 
* http://blogs.msdn.com/b/kaushal/archive/2010/11/05/ssl-certificates.aspx
 
* http://blogs.msdn.com/b/kaushal/archive/2010/11/05/ssl-certificates.aspx
 +
  
 
* http://wiki.cacert.org/Glossary/Validation
 
* http://wiki.cacert.org/Glossary/Validation
 +
  
 
* http://en.wikipedia.org/wiki/Server_Name_Indication - SNI allows more than one domain per ip address, not supported by older IE and Android 2
 
* http://en.wikipedia.org/wiki/Server_Name_Indication - SNI allows more than one domain per ip address, not supported by older IE and Android 2
 +
  
 
* http://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol
 
* http://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol
Line 161: Line 207:
  
 
* https://crt.sh/
 
* https://crt.sh/
 +
  
 
=== Certificate signing request ===
 
=== Certificate signing request ===
* .csr This is a Certificate Signing Request. Some applications can generate these for submission to certificate-authorities. It includes some/all of the key details of the requested certificate such as subject, organization, state, whatnot, as well as the public key of the certificate to get signed. These get signed by the CA and a certificate is returned. The returned certificate is the public certificate, which itself can be in a couple of formats.
+
* WP: Certificate_signing_request - '''.csr''' - Some applications can generate these for submission to certificate-authorities. It includes some/all of the key details of the requested certificate such as subject, organization, state, whatnot, as well as the public key of the certificate to get signed. These get signed by the CA and a certificate is returned. The returned certificate is the public certificate, which itself can be in a couple of formats.
  
* https://en.wikipedia.org/wiki/Certificate_signing_request
 
  
 
  openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
 
  openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
  
 
* https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&id=SO6506&searchid=1270237704682
 
* https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&id=SO6506&searchid=1270237704682
 +
  
 
=== Key formats ===
 
=== Key formats ===
Line 178: Line 225:
 
* SF: [http://serverfault.com/a/9717 What is a Pem file and how does it differ from other OpenSSL Generated Key File Formats?]
 
* SF: [http://serverfault.com/a/9717 What is a Pem file and how does it differ from other OpenSSL Generated Key File Formats?]
 
* [https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them DER vs. CRT vs. CER vs. PEM Certificates and How To Convert Them]
 
* [https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them DER vs. CRT vs. CER vs. PEM Certificates and How To Convert Them]
 +
  
 
=== SAN ===
 
=== SAN ===
Line 184: Line 232:
 
=== Wildcard ===
 
=== Wildcard ===
 
* http://en.wikipedia.org/wiki/Wildcard_certificate
 
* http://en.wikipedia.org/wiki/Wildcard_certificate
 +
  
 
=== Domain Validation ===
 
=== Domain Validation ===
* http://en.wikipedia.org/wiki/Certificate_authority#Domain_validation
+
* https://en.wikipedia.org/wiki/Domain-validated_certificate - '''DV''', is an X.509 digital certificate typically used for Transport Layer Security (TLS) where the domain name of the applicant has been validated by proving some control over a DNS domain.
  
 
=== Organisational Validation ===
 
=== Organisational Validation ===
Line 193: Line 242:
 
=== Extended Validation ===
 
=== Extended Validation ===
 
* http://en.wikipedia.org/wiki/Extended_Validation_Certificate - provides a green address bar, bit of a rip-off though
 
* http://en.wikipedia.org/wiki/Extended_Validation_Certificate - provides a green address bar, bit of a rip-off though
 +
  
 
=== Self-signed ===
 
=== Self-signed ===
Line 200: Line 250:
 
* [http://www.akadia.com/services/ssh_test_certificate.html How to create a self-signed SSL Certificate] which can be used for testing purposes or internal usage
 
* [http://www.akadia.com/services/ssh_test_certificate.html How to create a self-signed SSL Certificate] which can be used for testing purposes or internal usage
  
=== Lets Encrypt / ACME ===
+
=== Local certificates ===
 +
* https://github.com/FiloSottile/mkcert - A simple zero-config tool to make locally trusted development certificates with any names you'd like.
 +
 
 +
 
 +
* https://github.com/devilbox/cert-gen - Generate CA and self-signed SSL certificates usable in your browser for local development.
 +
 
 +
== CAs ==
 +
* http://en.wikipedia.org/wiki/Certificate_authority
 +
 
 +
* https://www.eff.org/observatory
 +
* http://www.certificate-transparency.org/
 +
 
 +
* http://en.wikipedia.org/wiki/Comparison_of_SSL_certificates_for_web_servers
 +
 
 +
* https://www.eff.org/sovereign-keys
 +
** https://git.eff.org/?p=sovereign-keys.git;a=blob;f=sovereign-key-design.txt;hb=master
 +
 
 +
=== Software ===
 +
* https://github.com/OpenVPN/easy-rsa - a CLI utility to build and manage a PKI CA. In laymen's terms, this means to create a root certificate authority, and request and sign certificates, including sub-CAs and certificate revocation lists (CRL).
 +
 
 +
=== Services ===
 +
==== Lets Encrypt / ACME ====
 
* https://letsencrypt.org/ [https://news.ycombinator.com/item?id=10217470]
 
* https://letsencrypt.org/ [https://news.ycombinator.com/item?id=10217470]
  
Line 218: Line 289:
  
 
* https://github.com/Neilpang/acme.sh
 
* https://github.com/Neilpang/acme.sh
 +
 +
* https://github.com/lukas2511/dehydrated - a client for signing certificates with an ACME-server (e.g. Let's Encrypt) implemented as a relatively simple (zsh-compatible) bash-script. This client supports both ACME v1 and the new ACME v2 including support for wildcard certificates!
  
  
Line 230: Line 303:
 
* https://news.ycombinator.com/item?id=11399476
 
* https://news.ycombinator.com/item?id=11399476
  
== CAs ==
 
* http://en.wikipedia.org/wiki/Certificate_authority
 
 
* https://www.eff.org/observatory
 
* http://www.certificate-transparency.org/
 
 
* http://en.wikipedia.org/wiki/Comparison_of_SSL_certificates_for_web_servers
 
 
* https://www.eff.org/sovereign-keys
 
** https://git.eff.org/?p=sovereign-keys.git;a=blob;f=sovereign-key-design.txt;hb=master
 
  
=== Services ===
 
 
==== Comodo ====
 
==== Comodo ====
 
* http://www.comodo.com/ - security history a bit of a joke
 
* http://www.comodo.com/ - security history a bit of a joke
Line 305: Line 367:
 
* https://getssl.me/
 
* https://getssl.me/
  
== PFS ==
+
== Future ==
* http://en.wikipedia.org/wiki/Perfect_forward_secrecy
+
* http://www.certificate-transparency.org/comparison
 +
 
 +
 
 +
* [http://tack.io/ TACK], a proposal for a dynamically activated public key pinning framework that provides a layer of indirection away from Certificate Authorities, but is fully backwards compatible with existing CA certificates, and doesn't require sites to modify their existing certificate chains.
 +
 
 +
 
 +
* http://blather.michaelwlucas.com/archives/1591
 +
 
 +
 
 +
* http://perspectives-project.org/
 +
* http://convergence.io/
 +
** http://en.wikipedia.org/wiki/Convergence_(SSL)
  
* http://news.netcraft.com/archives/2013/06/25/ssl-intercepted-today-decrypted-tomorrow.html
 
  
* http://baudehlo.wordpress.com/2013/06/24/setting-up-perfect-forward-secrecy-for-nginx-or-stud/
+
* https://news.ycombinator.com/item?id=6869705
  
* https://news.ycombinator.com/item?id=5955866
 
  
== CRL ==
+
* https://news.ycombinator.com/item?id=10795404
* https://isc.sans.edu/crls.html
 
  
== DNSSEC ==
 
* http://jpmens.net/2011/02/16/ssl-certificate-validation-and-dnssec/
 
* http://blog.huque.com/2012/10/dnssec-and-certificates.html
 
* http://blogs.cisco.com/security/top-of-mind-problems-with-ssl-solved-with-dnssec/
 
  
* https://os3sec.org/
 
  
== DANE ==
 
* https://datatracker.ietf.org/wg/dane/charter/
 
  
== HPKP ==
+
* [https://blog.cloudflare.com/introducing-0-rtt/ Introducing Zero Round Trip Time Resumption (0-RTT)]
* https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning
 
  
* http://news.netcraft.com/archives/2016/03/22/secure-websites-shun-http-public-key-pinning.html [https://news.ycombinator.com/item?id=11336317]
+
* [https://blog.trailofbits.com/2019/03/25/what-application-developers-need-to-know-about-tls-early-data-0rtt/ What Application Developers Need To Know About TLS Early Data (0RTT) | Trail of Bits Blog]
  
== Future ==
+
* https://ldapwiki.com/wiki/0-RTT%20Handshakes
* http://www.certificate-transparency.org/comparison
 
  
* [http://tack.io/ TACK], a proposal for a dynamically activated public key pinning framework that provides a layer of indirection away from Certificate Authorities, but is fully backwards compatible with existing CA certificates, and doesn't require sites to modify their existing certificate chains.
 
  
* http://blather.michaelwlucas.com/archives/1591
+
== Signed HTTP Exchanges / SGX ==
  
* http://perspectives-project.org/
+
* [https://developer.chrome.com/blog/signed-exchanges/ Signed HTTP Exchanges - Chrome Developers] - a subset of the emerging technology called Web Packages, which enables publishers to safely make their content portable, i.e. available for redistribution by other parties, while still keeping the content’s integrity and attribution. Portable content has many benefits, from enabling faster content delivery to facilitating content sharing between users, and simpler offline experiences. So, how do Signed HTTP Exchanges work? This technology allows a publisher to sign a single HTTP exchange (i.e., a request/response pair), in the way that the signed exchange can be served from any caching server. When the browser loads this Signed Exchange, it can safely show the publisher’s URL in the address bar because the signature in the exchange is sufficient proof that the content originally came from the publisher’s origin.
* http://convergence.io/
 
** http://en.wikipedia.org/wiki/Convergence_(SSL)
 
  
* https://news.ycombinator.com/item?id=6869705
 
  
* https://news.ycombinator.com/item?id=10795404
+
* [https://web.dev/signed-exchanges/ Signed Exchanges (SXGs)]
  
 
== Other ==
 
== Other ==
Line 356: Line 413:
  
 
* [https://insecure.design/ Insecure Design - BygoneSSL] - what can happen when a SSL certificate can outlive one of its domains' ownerships into the next.
 
* [https://insecure.design/ Insecure Design - BygoneSSL] - what can happen when a SSL certificate can outlive one of its domains' ownerships into the next.
 +
 +
 +
 +
* [https://www.ietf.org/archive/id/draft-ietf-httpbis-message-signatures-04.html Signing HTTP Messages] - a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over content within an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer, and where the message may be transformed (e.g., by intermediaries) before reaching the verifier.

Latest revision as of 03:17, 2 April 2024

General

See also HTTP#SSL

  • Transport Layer Security (TLS) and its predecessor, Secure Sockets Layer (SSL), are cryptographic protocols that provide communication security over the Internet. They use asymmetric cryptography for authentication of key exchange, symmetric encryption for confidentiality and message authentication codes for message integrity. Several versions of the protocols are in widespread use in applications such as web browsing, electronic mail, Internet faxing, instant messaging and voice-over-IP (VoIP).

In the TCP/IP model view, TLS and SSL encrypt the data of network connections at a lower sublayer of its application layer. In OSI model equivalences, TLS/SSL is initialized at layer 5 (the session layer) then works at layer 6 (the presentation layer): first the session layer has a handshake using an asymmetric cipher in order to establish cipher settings and a shared key for that session; then the presentation layer encrypts the rest of the communication using a symmetric cipher and that session key. In both models, TLS and SSL work on behalf of the underlying transport layer, whose segments carry encrypted data.


  • AboutSSL.org - Explore SSL Types, Brands, Reviews, Comparison and More.


Specs

some rfcs..







ESNI


Encrypted Client Hello (ECH)

Guides


HTTPS

See HTTP#SSL


PFS

CRL

DANE

HPKP


Software

Gnutils


OpenSSL

openssl ciphers -v
openssl verify -CAfile /etc/nginx/ca.pem certs/client.crt


NSS

tlspool

mbedtls

BoringSSL

  • boringssl - a fork of OpenSSL that is designed to meet Google's needs.Although BoringSSL is an open source project, it is not intended for general use, as OpenSSL is. We don't recommend that third parties depend upon it. Doing so is likely to be frustrating because there are no guarantees of API or ABI stability. Programs ship their own copies of BoringSSL when they use it and we update everything as needed when deciding to make API changes. This allows us to mostly avoid compromises in the name of compatibility. It works for us, but it may not work for you.

BoringSSL arose because Google used OpenSSL for many years in various ways and, over time, built up a large number of patches that were maintained while tracking upstream OpenSSL. As Google's product portfolio became more complex, more copies of OpenSSL sprung up and the effort involved in maintaining all these patches in multiple places was growing steadily.



Tools

  • SSL Server Test - This free online service performs a deep analysis of the configuration of any SSL web server on the public Internet.


  • Why No Padlock? - This web based tool will check a secure (https://) URL for the following items: Valid SSL Certificate (checks expiration date, properly installed intermediate certificate, URL matches the certificate domain, and displays the SSL Issuing company. All image, css, and javascript calls on the page are done so securely. Checks each linked css file to make sure any image calls are also secure. Outputs any insecure calls, along with the file (referrer) that made the insecure call. Verifies all third party SSL calls also have a valid and properly installed SSL certificate.


  • sslScanner - Scan SSL based TCP services, ips, ports and network ranges to obtain certificate expiry data. Get automated alerts about certificates expiring


  • SSL Converter - convert SSL certificates to and from different formats such as pem, der, p7b, and pfx
  • Certificate Depot - Create your self-signed SSL certificate instantly and for free.



Analysis


Certificates







Certificate signing request

  • WP: Certificate_signing_request - .csr - Some applications can generate these for submission to certificate-authorities. It includes some/all of the key details of the requested certificate such as subject, organization, state, whatnot, as well as the public key of the certificate to get signed. These get signed by the CA and a certificate is returned. The returned certificate is the public certificate, which itself can be in a couple of formats.


openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr


Key formats

  • .pem Defined in RFC's 1421 through 1424, this is a container format that may include just the public certificate (such as with Apache installs, and CA certificate files /etc/ssl/certs), or may include an entire certificate chain including public key, private key, and root certificates. The name is from Privacy Enhanced Email, a failed method for secure email but the container format it used lives on.
  • .key This is a PEM formatted file containing just the private-key of a specific certificate. In Apache installs, this frequently resides in /etc/ssl/private. The rights on this directory and the certificates is very important, and some programs will refuse to load these certificates if they are set wrong.
  • .pkcs12 .pfx .p12 Originally defined by RSA in the Public-Key Cryptography Standards, the "12" variant was enhanced by Microsoft. This is a passworded container format that contains both public and private certificate pairs. Unlike .pem files, this container is fully encrypted. Every time I get one I have to google to remember the openssl-fu required to break it into .key and .pem files.


SAN

Wildcard


Domain Validation

  • WP: Domain-validated_certificate - DV, is an X.509 digital certificate typically used for Transport Layer Security (TLS) where the domain name of the applicant has been validated by proving some control over a DNS domain.

Organisational Validation

involving better/slower background checks for the Organisation Name field

Extended Validation


Self-signed

Vulnerable to MITM as cracker can generate their own, OK if you control both ends.

Local certificates


CAs

Software

  • https://github.com/OpenVPN/easy-rsa - a CLI utility to build and manage a PKI CA. In laymen's terms, this means to create a root certificate authority, and request and sign certificates, including sub-CAs and certificate revocation lists (CRL).

Services

Lets Encrypt / ACME




  • https://github.com/lukas2511/dehydrated - a client for signing certificates with an ACME-server (e.g. Let's Encrypt) implemented as a relatively simple (zsh-compatible) bash-script. This client supports both ACME v1 and the new ACME v2 including support for wildcard certificates!


./letsencrypt-auto certonly -d example.com -d www.example.com --agree-tos --renew-by-default -a webroot --webroot-path=/tmp/letsencrypt-auto


Comodo

VeriSign

GlobalSign

StartCom

Free certs, one cert per domain, 1 year. One only pays for acions that require human intervention, i.e., validation.


Cacert.org

Community group providing certs. Web of trust based assurance point system. Not carried by major browsers, just Linux distros.

Other

  • SSLMate - Buy SSL certs from the command line.
  • CertSimple - The fastest way to prove your company's identity online. EV Certificates are £149 a year. Multiple servers from £249 a year for 3 server names.

Future


  • TACK, a proposal for a dynamically activated public key pinning framework that provides a layer of indirection away from Certificate Authorities, but is fully backwards compatible with existing CA certificates, and doesn't require sites to modify their existing certificate chains.








Signed HTTP Exchanges / SGX

  • Signed HTTP Exchanges - Chrome Developers - a subset of the emerging technology called Web Packages, which enables publishers to safely make their content portable, i.e. available for redistribution by other parties, while still keeping the content’s integrity and attribution. Portable content has many benefits, from enabling faster content delivery to facilitating content sharing between users, and simpler offline experiences. So, how do Signed HTTP Exchanges work? This technology allows a publisher to sign a single HTTP exchange (i.e., a request/response pair), in the way that the signed exchange can be served from any caching server. When the browser loads this Signed Exchange, it can safely show the publisher’s URL in the address bar because the signature in the exchange is sufficient proof that the content originally came from the publisher’s origin.


Other




  • Signing HTTP Messages - a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over content within an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer, and where the message may be transformed (e.g., by intermediaries) before reaching the verifier.