Web server tests used + results:
SSL/TLS:
- The Danbooru web server is vulnerable to the OpenSSL Padding Oracle vulnerability (CVE-2016-2107) and can therefore be considered insecure. Fix: OpenSSL 1.0.2 users should upgrade to at least 1.0.2h and OpenSSL 1.0.1 users should upgrade to at least 1.0.1t.
- The web server server accepts the broken RC4 cipher (only with older protocol versions) in the following cipher suites: TLS_ECDHE_RSA_WITH_RC4_128_SHA & TLS_RSA_WITH_RC4_128_SHA. This is a minor issue, but in this day and age RC4 should be banned from the server configuration. An exception for this rule could be justified, if there were any important old clients accessing Danbooru over RC4. Fix: The Mozilla SSL Configuration Generator recommends this configuration for nginx 1.6.2 + OpenSSL 1.0.1t. This configuration will also guarantee Forward Secrecy with most modern clients. Warning: If the server admin wants to use HSTS, then he must be sure that he will be supporting HTTPS on whole site for a long period of time. HSTS might be overkill (also because Danbooru can still be accessed via plain HTTP ;D).
- Enable TLS Session Resumption for better performance (SSL/TLS nginx configuration overview).
ssl_session_timeout 4h; ssl_session_cache shared:SSL:20m; ssl_session_tickets off;
- The intermediate certificate GeoTrust Global CA (SHA1 fingerprint: 7359755c6df9a0abc3060bce369564c8ec4542a3) signed by the Equifax root certificate (SHA1 fingerprint: d23209ad23d314232174e40d7f9d62139786633a) has a weak signature (SHA1withRSA). Furthermore, the Equifax root certificate was revoked by its certification authority because it uses a weak 1024 bit long RSA key. Fix: Remove the GeoTrust Global CA certificate (SHA1 fingerprint: 7359755c6df9a0abc3060bce369564c8ec4542a3) from the certificate chain. Afterwards the certificate chain should look like this. Possibly related: GitHub issue #2118
- Enable OCSP Stapling to improve user privacy (SSL/TLS nginx configuration overview). The content of the "root_CA_cert_plus_intermediates.pem" file should look like this. Safebooru's should look like this.
ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates.pem; resolver 8.8.8.8 8.8.4.4;
HTTP:
- Update NGINX to at least 1.9.5 to benefit from the HTTP/2 performance boost on modern clients (SSL/TLS nginx configuration overview).
server { listen 443 ssl http2; listen [::]:443 ssl http2; ...
Updated