3

I am currently in the process of implementing a secure payment system. I want this system to be PCI compliant and have the highest version of TLS implemented on it.

The system as it stands has several subdomains using a wildcard certificate, the users that access the site operate legacy browsers meaning that we have a slightly older version of TLS.

Is it possible to have a new checkout subdomain using the wildcard certificate and implement a different version of TLS on this new checkout subdomain (it will reside in a separate environment as well)?

If it is possible is that the best and most secure option, or is it recommended to separate it out completely with its own certificate?

2 Answers 2

3

That is absolutely possible.

For both Apache and nginx, you can define TLS options per virtual-host.

Taking nginx as an example, every block like the following (taken from Mozilla's TLS config generator can specify its own TLS options and preferences:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
    ssl_certificate /path/to/signed_cert_plus_intermediates;
    ssl_certificate_key /path/to/private_key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;


    # modern configuration. tweak to your needs.
    ssl_protocols TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_prefer_server_ciphers on;

    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
    add_header Strict-Transport-Security max-age=15768000;

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;

    ## verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

    resolver <IP DNS resolver>;

    ....
}

You can use any (hopefully valid) cert within the block, including re-using a cert between subdomains. The TLS settings are distinct from the details of the certificate and key used.

However, although you can do this, it may make sense to consider, at least, using different certificates - it would allow you to revoke certificates for different parts of your site in case of compromise.

Using the wildcard cert, if that key is compromised, your whole site will be offline until you can get a new cert. If you have per domain certs, and possibly a wildcard as a fallback, you make yourself better able to deal with that situation without necessarily affecting your entire service.

2

In addition to @iwaseatenbyagrue's answer, although most SSL/TLS versions should not pose a risk to your extra secure subdomain, if you support SSL 2 anywhere then it'll put any connection using the same certificate at risk, no matter the SSL/TLS version that is used for it.

In fact, due to modern browsers banning SHA-1 certificates, there are (as far as I know) no browsers around that can still connect to any website that's secured with a publicly trusted SSL certificate and that don't support at least TLS 1.0, so there is not a single reason to use the obsolete and insecure SSL 3 either.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .