1 %%\subsection{Webservers}
3 %%----------------------------------------------------------------------
6 \subsubsection{Tested with Versions}
8 \item Apache 2.4.6 linked against OpenSSL 1.0.1e, Debian jessie
12 \subsubsection{Settings}
14 Enabled modules \emph{SSL} and \emph{Headers} are required.
17 %-All +TLSv1.1 +TLSv1.2
18 \begin{lstlisting}[breaklines]
19 SSLCertificateFile server.crt
20 SSLCertificateKeyFile server.key
21 SSLProtocol All -SSLv2 -SSLv3
22 SSLHonorCipherOrder On
24 # Add six earth month HSTS header for all users...
25 Header add Strict-Transport-Security "max-age=15768000"
26 # If you want to protect all subdomains, use the following header
27 # ALL subdomains HAVE TO support https if you use this!
28 # Strict-Transport-Security: max-age=15768000 ; includeSubDomains
30 SSLCipherSuite '@@@CIPHERSTRINGB@@@'
34 Note that any cipher suite starting with ECDHE can be omitted, if in doubt.
38 \subsubsection{Additional settings}
40 You might want to redirect everything to httpS:// if possible. In Apache you can do this with the following setting inside of a VirtualHost environment:
42 \begin{lstlisting}[breaklines]
46 RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=permanent]
51 %\subsubsection{Justification for special settings (if needed)}
53 \subsubsection{References}
54 \url{https://httpd.apache.org/docs/2.4/ssl/}
57 \subsubsection{How to test}
59 See section \ref{section:Tools}
64 %%----------------------------------------------------------------------
70 \subsubsection{Tested with Version}
72 \item lighttpd/1.4.31-4 with OpenSSL 1.0.1e on Debian Wheezy
73 \item lighttpd/1.4.33 with OpenSSL 0.9.8o on Debian Squeeze (note that TLSv1.2 does not work in openssl 0.9.8 thus not all ciphers actually work)
74 \item lighttpd/1.4.28-2 with OpenSSL 0.9.8o on Debian Squeeze (note that TLSv1.2 does not work in openssl 0.9.8 thus not all ciphers actually work)
78 \subsubsection{Settings}
81 %% Complete ssl.cipher-list with same algo than Apache
82 \todo{FIXME: this string seems to be wrongly formatted??}
84 \begin{lstlisting}[breaklines]
85 $SERVER["socket"] == "0.0.0.0:443" {
87 ssl.use-sslv2 = "disable"
88 ssl.use-sslv3 = "disable"
89 #ssl.use-compression obsolete >= 1.4.3.1
90 ssl.pemfile = "/etc/lighttpd/server.pem"
91 ssl.cipher-list = '@@@CIPHERSTRINGB@@@'
92 ssl.honor-cipher-order = "enable"
93 setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=31536000")
98 \subsubsection{Additional settings}
100 As for any other webserver, you might want to automatically redirect http
101 traffic toward httpS:// It is also recommended to set the environment variable
102 \emph{HTTPS}, so the applications run by the webserver can easily detect, that
107 \begin{lstlisting}[breaklines]
108 $HTTP["scheme"] == "http" {
109 # capture vhost name with regex conditiona -> %0 in redirect pattern
110 # must be the most inner block to the redirect rule
111 $HTTP["host"] =~ ".*" {
112 url.redirect = (".*" => "https://%0$0")
115 # Set the environment variable properly
116 setenv.add-environment = (
123 \subsubsection{Additional information}
124 The config option \emph{honor-cipher-order} is available since 1.4.30, the
125 supported ciphers depend on the used OpenSSL-version (at runtime). ECDH has to
126 be available in OpenSSL at compile-time, which should be default. SSL
127 compression should by deactivated by default at compile-time (if not, it's
130 Support for other SSL-libraries like GnuTLS will be available in the upcoming
131 2.x branch, which is currently under development.
134 \subsubsection{References}
137 \item HTTPS redirection: \url{http://redmine.lighttpd.net/projects/1/wiki/HowToRedirectHttpToHttps}
138 \item Lighttpd Docs SSL: \url{http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs\_SSL}
139 \item Release 1.4.30 (How to mitigate BEAST attack) \url{http://redmine.lighttpd.net/projects/lighttpd/wiki/Release-1\_4\_30}
140 \item SSL Compression disabled by default: \url{http://redmine.lighttpd.net/issues/2445}
146 \subsubsection{How to test}
147 See section \ref{section:Tools}
149 % describe here or point the admin to tools (can be a simple footnote or \ref{} to the tools section) which help the admin to test his settings.
153 %%----------------------------------------------------------------------
157 \subsubsection{Tested with Version}
159 \item 1.4.4 with OpenSSL 1.0.1e on OS X Server 10.8.5
160 \item 1.2.1-2.2+wheezy2 with OpenSSL 1.0.1e on Debian Wheezy
161 \item 1.4.4 with OpenSSL 1.0.1e on Debian Wheezy
162 \item 1.2.1-2.2~bpo60+2 with OpenSSL 0.9.8o on Debian Squeeze (note that TLSv1.2 does not work in openssl 0.9.8 thus not all ciphers actually work)
166 \subsubsection{Settings}
168 \begin{lstlisting}[breaklines]
169 ssl_prefer_server_ciphers on;
170 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # not possible to do exclusive
171 ssl_ciphers '@@@CIPHERSTRINGB@@@';
172 add_header Strict-Transport-Security max-age=2592000;
175 If you absolutely want to specify your own DH parameters, you can specify them via
177 \begin{lstlisting}[breaklines]
181 However, we advise you to read section \ref{section:DH} and stay with the standard IKE/IETF parameters (as long as they are $ > 1024 $ bits).
185 \subsubsection{Additional settings}
187 If you decide to trust NIST's ECC curve recommendation, you can add the following line to nginx's configuration file to select special curves:
189 \begin{lstlisting}[breaklines]
190 ssl_ecdh_curve secp384r1;
193 You might want to redirect everything to httpS:// if possible. In Nginx you can do this with the following setting:
195 \begin{lstlisting}[breaklines]
196 rewrite ^(.*) https://$host$1 permanent;
200 \subsubsection{References}
202 \item \url{http://nginx.org/en/docs/http/ngx_http_ssl_module.html}
203 \item \url{http://wiki.nginx.org/HttpSslModule}
206 \subsubsection{How to test}
207 See section \ref{section:Tools}
213 %%----------------------------------------------------------------------
218 \todo{Daniel: add screenshots and registry keys}
222 \subsubsection{Tested with Version} \todo{Daniel: add tested version}
224 \subsubsection{Settings}
227 When trying to avoid RC4 and CBC (BEAST-Attack) and requiring perfect
228 forward secrecy, Microsoft Internet Information Server (IIS) supports
229 ECDSA, but does not support RSA for key exchange (consider ECC suite
230 B doubts\footnote{\url{http://safecurves.cr.yp.to/rigid.html}}).
232 Since \verb|ECDHE_RSA_*| is not supported, a SSL certificate based on
233 elliptic curves needs to be used.
235 The configuration of cipher suites MS IIS will use, can be configured in one
236 of the following ways:
238 \item Group Policy \footnote{\url{http://msdn.microsoft.com/en-us/library/windows/desktop/bb870930(v=vs.85).aspx}}
240 \item IIS Crypto~\footnote{\url{https://www.nartac.com/Products/IISCrypto/}}
244 Table~\ref{tab:MS_IIS_Client_Support} shows the process of turning on
245 one algorithm after another and the effect on the supported clients
246 tested using https://www.ssllabs.com.
248 \verb|SSL 3.0|, \verb|SSL 2.0| and \verb|MD5| are turned off.
249 \verb|TLS 1.0| and \verb|TLS 2.0| are turned on.
256 Cipher Suite & Client \\
258 \verb|TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256| & only IE 10,11, OpenSSL 1.0.1e \\
259 \verb|TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256| & Chrome 30, Opera 17, Safari 6+ \\
260 \verb|TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA| & FF 10-24, IE 8+, Safari 5, Java 7\\
263 \caption{Client support}
264 \label{tab:MS_IIS_Client_Support}
267 Table~\ref{tab:MS_IIS_Client_Support} shows the algorithms from
268 strongest to weakest and why they need to be added in this order. For
269 example insisting on SHA-2 algorithms (only first two lines) would
270 eliminate all versions of Firefox, so the last line is needed to
271 support this browser, but should be placed at the bottom, so capable
272 browsers will choose the stronger SHA-2 algorithms.
274 \verb|TLS_RSA_WITH_RC4_128_SHA| or equivalent should also be added if
275 MS Terminal Server Connection is used (make sure to use this only in a
276 trusted environment). This suite will not be used for SSL, since we do
280 % \verb|TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256| ... only supported by: IE 10,11, OpenSSL 1.0.1e
281 % \verb|TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256| ... Chrome 30, Opera 17, Safari 6+
282 % \verb|TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA| ... Firefox 10-24, IE 8+, Safari 5, Java 7
285 Clients not supported:
292 \subsubsection{Additional settings}
294 %Here you can add additional settings
296 \subsubsection{Justification for special settings (if needed)}
298 % in case you have the need for further justifications why you chose this and that setting or if the settings do not fit into the standard Variant A or Variant B schema, please document this here
300 \subsubsection{References}
302 \todo{add references}
304 % add any further references or best practice documents here
306 \subsubsection{How to test}
307 See section \ref{section:Tools}