I know @ScottHelme has already played with Nginx 1.11.0 and dual ECDSA + RSA ssl certificate support. Anyone else ?
I just started playing with it https://community.centminmod.com/dualsslcerts via letsencrypt test staging ssl certificates for ECDSA and RSA via @Neilpang’s acme.sh client with some work arounds as it isn’t supporting dual certs out of the box yet
using testssl and ssllabs i can see RSA and ECDSA in use for browser clients
Running browser simulations (experimental)
Android 2.3.7 TLSv1 AES128-SHA
Android 4.0.4 TLSv1 ECDHE-RSA-AES128-SHA
Android 4.1.1 TLSv1 ECDHE-RSA-AES128-SHA
Android 4.2.2 TLSv1 ECDHE-RSA-AES128-SHA
Android 4.3 TLSv1.0 ECDHE-RSA-AES128-SHA
Android 4.4.2 TLSv1.1 ECDHE-RSA-AES128-SHA
Android 5.0.0 TLSv1.2 ECDHE-ECDSA-CHACHA20-POLY1305
Baidu Jan 2015 TLSv1 ECDHE-RSA-AES128-SHA
BingPreview Jan 2015 TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
Chrome 47 / OSX TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256
Firefox 31.3.0ESR / Win7 TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256
Firefox 42 / OSX TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256
GoogleBot Feb 2015 TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256
IE6 / XP No connection
IE7 / Vista TLSv1.0 ECDHE-RSA-AES128-SHA
IE8 / XP No connection
IE8-10 / Win7 TLSv1.0 ECDHE-RSA-AES128-SHA
IE11 / Win7 TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
IE11 / Win8.1 TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
IE10 / Win Phone 8.0 TLSv1.0 ECDHE-RSA-AES128-SHA
IE11 / Win Phone 8.1 TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
IE11 / Win Phone 8.1 Update TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
IE11 / Win10 TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
Edge 13 / Win10 TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
Edge 12 / Win Phone 10 TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
Java 6u45 TLSv1 AES128-SHA
Java 7u25 TLSv1 ECDHE-RSA-AES128-SHA
Java 8u31 TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256
OpenSSL 0.9.8y TLSv1 AES128-SHA
OpenSSL 1.0.1l TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
OpenSSL 1.0.2e TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
Safari 5.1.9/ OSX 10.6.8 TLSv1 ECDHE-RSA-AES128-SHA
Safari 6 / iOS 6.0.1 TLSv1.2 ECDHE-ECDSA-AES256-SHA384
Safari 6.0.4/ OS X 10.8.4 TLSv1 ECDHE-RSA-AES128-SHA
Safari 7 / iOS 7.1 TLSv1.2 ECDHE-ECDSA-AES256-SHA384
Safari 7 / OS X 10.9 TLSv1.2 ECDHE-ECDSA-AES256-SHA384
Safari 8 / iOS 8.4 TLSv1.2 ECDHE-ECDSA-AES256-SHA384
Safari 8 / OS X 10.10 TLSv1.2 ECDHE-ECDSA-AES256-SHA384
Safari 9 / iOS 9 TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
Safari 9 / OS X 10.11 TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384
cipherscan output
cipherscan https://domain.com
..........................................................................................................................................
Target: domain.com:443
prio ciphersuite protocols pubkey_size signature_algoritm trusted ticket_hint ocsp_staple pfs curves curves_ordering
1 ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 384 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1 server
2 ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 384 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1 server
3 ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 384 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1 server
4 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 384 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1 server
5 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 384 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1 server
6 ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 2048 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1 server
7 ECDHE-RSA-AES128-SHA256 TLSv1.2 2048 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1 server
8 ECDHE-RSA-AES128-SHA TLSv1,TLSv1.1,TLSv1.2 2048 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1 server
9 ECDHE-ECDSA-AES128-SHA TLSv1,TLSv1.1,TLSv1.2 384 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1 server
10 AES128-GCM-SHA256 TLSv1.2 2048 sha256WithRSAEncryption False 3600 False None None server
11 AES128-SHA256 TLSv1.2 2048 sha256WithRSAEncryption False 3600 False None None server
12 AES128-SHA TLSv1,TLSv1.1,TLSv1.2 2048 sha256WithRSAEncryption False 3600 False None None server
13 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 2048 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1 server
14 ECDHE-RSA-AES256-SHA384 TLSv1.2 2048 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1 server
15 ECDHE-RSA-AES256-SHA TLSv1,TLSv1.1,TLSv1.2 2048 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1 server
16 ECDHE-ECDSA-AES256-SHA TLSv1,TLSv1.1,TLSv1.2 384 sha256WithRSAEncryption False 3600 False ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1 server
17 AES256-GCM-SHA384 TLSv1.2 2048 sha256WithRSAEncryption False 3600 False None None server
18 AES256-SHA256 TLSv1.2 2048 sha256WithRSAEncryption False 3600 False None None server
19 AES256-SHA TLSv1,TLSv1.1,TLSv1.2 2048 sha256WithRSAEncryption False 3600 False None None server
OCSP stapling: not supported
Cipher ordering: server
Curves ordering: server - fallback: no
Server supports secure renegotiation
Server supported compression methods: NONE
TLS Tolerance: yes
curious how HPKP should be setup for dual ECDSA + RSA certs ? pin both certs private keys ? acme.sh workaround right now needs me to force a private key recreation so i suspect on renewal i’d need to regenerate the HPKP pins too